gianna1997 Δημοσ. 27 Νοεμβρίου 2017 Δημοσ. 27 Νοεμβρίου 2017 Καλησπέρα έχω κολλήσει αυτό το σημείο μπορεί να με βοηθήσει κάποιος ? Μετά θα διαβάζονται και θα αποθηκεύονται στον πίνακα arr1 10 ακέραιοι. Θα πρέπει να γίνεται έλεγχος ότι κάθε ακέραιος που εισάγεται είναι στο διάστημα [min,max]. Αν δεν είναι, τότε θα ζητείται να ξαναεισαχθεί μέχρι να δοθεί αριθμός στο σωστό διάστημα. #include <stdio.h>#include <stdlib.h>#define N 10#define M 10int 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; }
isay Δημοσ. 27 Νοεμβρίου 2017 Δημοσ. 27 Νοεμβρίου 2017 Με το scanf("%d",arr1_ptr); κάνεις απευθείας εισαγωγή τη δοθείσα τιμή στον πίνακα. Αντί για αυτό, βάζε την σε μια temp μεταβλητή και με ένα if loop κάνε ελεγχο αν ειναι μεσα στα όρια. Αν όχι ζήτα πάλι τον αριθμό, αν ναι βάλε την στον πίνακα.
GReaperEx Δημοσ. 27 Νοεμβρίου 2017 Δημοσ. 27 Νοεμβρίου 2017 Γιατί χρησιμοποιείς όλα αυτά τα *_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; }
gianna1997 Δημοσ. 27 Νοεμβρίου 2017 Μέλος Δημοσ. 27 Νοεμβρίου 2017 Η άσκηση λέει ότι πρέπει να γίνει με δείκτες γιαυτο χρησιμοποιώ όλα αυτά ,
becoming_I Δημοσ. 27 Νοεμβρίου 2017 Δημοσ. 27 Νοεμβρίου 2017 Εκεί που λες δώσε τους ακεραίους βάλε ένα while και έναν counter και μέσα στο while κάνε έλεγχο αν είναι εντός των min max. Αν είναι εντός +1 στον counter.
GReaperEx Δημοσ. 27 Νοεμβρίου 2017 Δημοσ. 27 Νοεμβρίου 2017 Η άσκηση λέει ότι πρέπει να γίνει με δείκτες γιαυτο χρησιμοποιώ όλα αυτά , Είσαι σίγουρη? Γιατί και το &min δείκτης είναι, απλά δεν είναι αποθηκευμένο σε μεταβλητή. Τεσπα, το πρόβλημα είναι αυτό που σου είπε ο isay, πρέπει να διαβάσεις τον αριθμό που δίνει ο χρήστης σε μια προσωρινή μεταβλητή και να ελέγχεις αν είναι στο πεδίο τιμών που θέλεις, πριν τον αποθηκεύσεις στον πίνακα.
BabyRage Δημοσ. 30 Νοεμβρίου 2017 Δημοσ. 30 Νοεμβρίου 2017 Η άσκηση αυτή δεν έχει ίχνος C++. Είναι pure C. Για να μην μπερδευόμαστε βεβαίως βεβαίως!
gianna1997 Δημοσ. 3 Δεκεμβρίου 2017 Μέλος Δημοσ. 3 Δεκεμβρίου 2017 Καλησπερα ΑΣΚΗΣΗ 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; } Ενώ δούλευε σωστά , δεν δουλεύει ...
amoutzas Δημοσ. 5 Δεκεμβρίου 2017 Δημοσ. 5 Δεκεμβρίου 2017 Καλησπερα ΑΣΚΗΣΗ 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) δοκιμασεσε να βγαλεις τα * και μετα ξανα τρεξτο και εχεις θεματα με τις αγγειλες σου δν τις κληνεις οπου πρεπει δες το λιγο
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα