Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα έχω κολλήσει αυτό το σημείο μπορεί να με βοηθήσει κάποιος ?

 

 

 

Μετά θα διαβάζονται και θα αποθηκεύονται στον πίνακα arr1 10 ακέραιοι. Θα πρέπει να γίνεται έλεγχος ότι κάθε ακέραιος που εισάγεται είναι στο διάστημα [min,max]. Αν δεν είναι, τότε θα ζητείται να ξαναεισαχθεί μέχρι να δοθεί αριθμός στο σωστό διάστημα.

 

 

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 10


int main()
{
 
  int i,min,max;
  int *min_ptr,*max_ptr;
  int arr1[N],arr2[M];
  int *arr1_ptr,*arr2_ptr;

  min_ptr=&min;
  max_ptr=&max;
  arr1_ptr=&arr1;
  arr2_ptr=&arr2[0];
      
    
    
    printf("dose timi gia to (min): ");
      scanf("%d",min_ptr);
    printf("\ndose timi gia to (max)#(min): ");
      scanf("%d",max_ptr);
  while(*min_ptr==*max_ptr){
      
      printf("\nksana dose timi gia to (min): ");
      scanf("%d",min_ptr);
    printf("\nksana dose timi gia to (max)#(min): ");
      scanf("%d",max_ptr);
      
      }
     
    
     printf("\nedoses sostes times gia to (min) = %d kai to (max) = %d\n", *min_ptr,*max_ptr);
 
 if(*min_ptr>*max_ptr){
     printf("\nepeidi (min>max) antistrefontai oi arithmoi.");
     printf("\n1/%d  1/%d\n",*min_ptr,*max_ptr);
    scanf("\n1/%d 1/%d\n",min_ptr,max_ptr);
    
      
 
}
      
       
    printf("\ndose 10 akeraious arithmous:\n ");
    for(i=0; i<N; i++){
              
             
        printf("\ndose ton %do akeraio arithmo: ",i+1);
               scanf("%d",arr1_ptr);
}
return 0;

}

Δημοσ.

Με το scanf("%d",arr1_ptr);

κάνεις απευθείας εισαγωγή τη δοθείσα τιμή στον πίνακα.

 

Αντί για αυτό, βάζε την σε μια temp μεταβλητή και με ένα if loop κάνε ελεγχο αν ειναι μεσα στα όρια. Αν όχι ζήτα πάλι τον αριθμό, αν ναι βάλε την στον πίνακα.

Δημοσ.

Γιατί χρησιμοποιείς όλα αυτά τα *_ptr? Απλά δώσε τα &min, &max κτλ κατευθείαν στην scanf. Βάλε το κώδικα σου μέσα σε code tags για να φαίνεται καλύτερα, έτσι:

 

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 10
 
int main()
{
    int i,min,max;
    int arr1[N],arr2[M];
 
    printf("dose timi gia to (min): ");
    scanf("%d",&min);
    printf("\ndose timi gia to (max)#(min): ");
    scanf("%d",&max);
    while(max==max) {
        printf("\nksana dose timi gia to (min): ");
        scanf("%d",&min);
        printf("\nksana dose timi gia to (max)#(min): ");
        scanf("%d",&max);
    }
    printf("\nedoses sostes times gia to (min) = %d kai to (max) = %d\n", min,max);
 
    if(min > max) {
        printf("\nepeidi (min>max) antistrefontai oi arithmoi.");
        printf("\n1/%d  1/%d\n",min,max);
        scanf("\n1/%d 1/%d\n",&min,&max);
    }
 
    printf("\ndose 10 akeraious arithmous:\n ");
    for(i=0; i<N; i++) {
        printf("\ndose ton %do akeraio arithmo: ",i+1);
        scanf("%d",&arr1[i]);
    }
 
    return 0;
}
Δημοσ.

Εκεί που λες δώσε τους ακεραίους βάλε ένα while και έναν counter και μέσα στο while κάνε έλεγχο αν είναι εντός των min max. Αν είναι εντός +1 στον counter.

Δημοσ.

Η άσκηση λέει ότι πρέπει να γίνει με δείκτες γιαυτο χρησιμοποιώ όλα αυτά , :mellow:

 

Είσαι σίγουρη? Γιατί και το &min δείκτης είναι, απλά δεν είναι αποθηκευμένο σε μεταβλητή.

 

Τεσπα, το πρόβλημα είναι αυτό που σου είπε ο isay, πρέπει να διαβάσεις τον αριθμό που δίνει ο χρήστης σε μια προσωρινή μεταβλητή και να ελέγχεις αν είναι στο πεδίο τιμών που θέλεις, πριν τον αποθηκεύσεις στον πίνακα.

Δημοσ.

Καλησπερα

ΑΣΚΗΣΗ 1

 

 

#include <stdio.h>

#include <stdlib.h>

#define N 10

#define M 10

 

 

int main()

{

 

int i,min,max;

int *min_ptr,*max_ptr;

int arr1[N],arr2[M];

int *arr1_ptr,*arr2_ptr;

int mo,sum,sub,*mo_ptr,*sum_ptr,*sub_ptr;

int temp;

min_ptr=&min;

max_ptr=&max;

mo_ptr=&mo;

sum_ptr=∑

sub_ptr=⊂

arr1_ptr=&arr1[0];

arr2_ptr=&arr2[0];

 

​printf("dose timi gia to (min)<(max): ");

scanf("%d",min_ptr);

​printf("\ndose timi gia to (max)#(min) kai (max)>(min) : ");

scanf("%d",max_ptr);

printf("\nedoses (min) = %d kai to (max) = %d\n", *min_ptr,*max_ptr);

 

 

while(*min_ptr==*max_ptr){

​printf("\nksana dose timi gia to (min): ");

scanf("%d",min_ptr);

​printf("\nksana dose timi gia to (max)#(min): ");

scanf("%d",max_ptr);

​}

 

 

if(*min_ptr>*max_ptr){

​printf("\nepeidi (min>max) antistrefontai oi arithmoi.");

​ temp=*max_ptr;

​ *max_ptr=*min_ptr;

​ *min_ptr=temp;

​ printf("\n (max)=%d (min)=%d\n",*max_ptr,*min_ptr);

 

​}

 

​printf("\ndose 10 arithmous sto diastima [min,max]:\n ");

​​for(i=0; i<10; i++){

​​​

 

printf("\ndose ton %do arithmo: ",i+1);

scanf("%d",arr1_ptr+i);

 

 

​while(*arr1_ptr+i<*min_ptr+i || *arr1_ptr+i>*max_ptr+i){

​​

​​

 

​printf("\nksanadose ton %do arithmo: ",i+1);

​ scanf("%d",arr1_ptr+i);

}

 

 

sum=*min_ptr+*max_ptr;

mo=sum/2;

sub=*arr1_ptr-*mo_ptr;

*arr2_ptr++=sub;

​ printf("\n%d",*(arr2_ptr-1));

}

system("pause");

 

return 0;

 

}

Ενώ δούλευε σωστά , δεν δουλεύει ...

Δημοσ.

Καλησπερα

ΑΣΚΗΣΗ 1

 

 

#include <stdio.h>

#include <stdlib.h>

#define N 10

#define M 10

 

 

int main()

{

 

int i,min,max;

int *min_ptr,*max_ptr;

int arr1[N],arr2[M];

int *arr1_ptr,*arr2_ptr;

int mo,sum,sub,*mo_ptr,*sum_ptr,*sub_ptr;

int temp;

min_ptr=&min;

max_ptr=&max;

mo_ptr=&mo;

sum_ptr=∑

sub_ptr=⊂

arr1_ptr=&arr1[0];

arr2_ptr=&arr2[0];

 

​printf("dose timi gia to (min)<(max): ");

scanf("%d",min_ptr);

​printf("\ndose timi gia to (max)#(min) kai (max)>(min) : ");

scanf("%d",max_ptr);

printf("\nedoses (min) = %d kai to (max) = %d\n", *min_ptr,*max_ptr);

 

 

while(*min_ptr==*max_ptr){

​printf("\nksana dose timi gia to (min): ");

scanf("%d",min_ptr);

​printf("\nksana dose timi gia to (max)#(min): ");

scanf("%d",max_ptr);

​}

 

 

if(*min_ptr>*max_ptr){

​printf("\nepeidi (min>max) antistrefontai oi arithmoi.");

​ temp=*max_ptr;

​ *max_ptr=*min_ptr;

​ *min_ptr=temp;

​ printf("\n (max)=%d (min)=%d\n",*max_ptr,*min_ptr);

 

​}

 

​printf("\ndose 10 arithmous sto diastima [min,max]:\n ");

​​for(i=0; i<10; i++){

​​​

 

printf("\ndose ton %do arithmo: ",i+1);

scanf("%d",arr1_ptr+i);

 

 

​while(*arr1_ptr+i<*min_ptr+i || *arr1_ptr+i>*max_ptr+i){

​​

​​

 

​printf("\nksanadose ton %do arithmo: ",i+1);

​ scanf("%d",arr1_ptr+i);

}

 

 

sum=*min_ptr+*max_ptr;

mo=sum/2;

sub=*arr1_ptr-*mo_ptr;

*arr2_ptr++=sub;

​ printf("\n%d",*(arr2_ptr-1));

}

system("pause");

 

return 0;

 

}

Ενώ δούλευε σωστά , δεν δουλεύει ...

​while(*arr1_ptr+i<*min_ptr+i || *arr1_ptr+i>*max_ptr+i) δοκιμασεσε να βγαλεις τα * και μετα ξανα τρεξτο και εχεις θεματα με τις αγγειλες σου δν τις κληνεις οπου πρεπει δες το λιγο

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...