Coprophiliac Δημοσ. 14 Ιανουαρίου 2014 Δημοσ. 14 Ιανουαρίου 2014 Στα 3 παράκατω παραδείγματα, παρατηρείται εσφαλμένη λειτουργία της scanf. Όταν τρέχω ένα από τα 3 προγράμματα , το πρόγραμμα ζητάει μία ακόμη τιμή. Παρ'όλα αυτά, το πρόγραμμα εκτελείται κανονικά και η επιπλέον τιμή που δίνεται, δεν παίζει ρόλο στο αποτέλεσμα του προγράμματος. Μήπως θα μπορούσα να έχω μία ολοκληρωμένη απάντηση; Παράδειγμα 1 #include <stdio.h>int main(){ int SIZE; printf("dose to megethos tou pinaka SIZE\n"); scanf("%d\n",&SIZE); int i,j,array[size-1][size-1]; for(i=0;i<=SIZE-1;i++) { for(j=0;j<=i;j++) { if(j==0) array[j]=1; else if(i==j) array[j]=1; else { array[j]=array[i-1][j]+array[i-1][j-1]; } printf("%3d",array[j]); } printf("\n"); } return 0;} Παράδειγμα 2 #include <stdio.h>int main(){ int num,i,j,N; printf("dose ton arithmo ton stoixeion N\n"); scanf("%d",&N); int array[N]; printf("dose ta stoixeia\n"); for(i=0;i<=N-1;i++) { scanf("%d\n",&num); array=num; } int temp; for(i=0;i<=N-1;i++) { temp=array; j=i; while((j>0)&&(array[j-1]>temp)) { array[j]=array[j-1]; j--; } array[j]=temp; } for(i=0;i<=N-1;i++) { printf("%d\n",array); } return 0;} Παράδειγμα 3 #include <stdio.h>#define size 7int main(){ int i,x,arr,pin[size-1]; printf("dwse times\n"); for(i=0;i<=6;i++) { scanf("%d\n",&x); arr=x; } for(i=1;i<=6;i++) { pin[i-1]=arr*i; } for(i=0;i<=5;i++) { printf("%d\n",pin); }return 0;}
pitogiro Δημοσ. 14 Ιανουαρίου 2014 Δημοσ. 14 Ιανουαρίου 2014 Ζητάει 2 τιμές εξαιτίας του \n στην scanf. Μπορείς να διαβάσεις και σχετικά Site: εδώ
bokoss Δημοσ. 14 Ιανουαρίου 2014 Δημοσ. 14 Ιανουαρίου 2014 φιλε με ποιο προγραμμα τρεχεις τον κοδικα?? αν το τρεχεις με visual studio 2013 να ξες οτι την scanf πρεπει να την βαλεις scanf_s
gon1332 Δημοσ. 15 Ιανουαρίου 2014 Δημοσ. 15 Ιανουαρίου 2014 Μία πιο ολοκληρωμένη απάντηση... Λοιπόν, το πρόβλημα βρίσκεται στην scanf("%d\n", &x) και στην scanf("%d\n", &SIZE) και συγκεκριμένα στο \n όπως είπε και ο pitogiro. Η scanf έτσι όπως την έγραψες περιμένει 2 πράγματα από το χρήστη σαν είσοδο με τη σειρά που θα τα γράψω: έναν ακέραιο ένα newline Αφού λοιπόν εισάγεις τον ακέραιο και πατήσεις enter, τότε περιμένει από εσένα να εισάγεις κι ένα newline πριν συνεχστεί η εκτέλεση του προγράμματος. Άρα αν αφαιρέσεις το \n από τη scanf, τότε θα δουλέψει όπως περιμένεις.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα