smilefreeware Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 Στο παρακάτω DO-WHILE πρέπει να βάζεις αριθμούς μέχρι να βάλεις το -1, οπότε συνεχίζει εκτός DO-WHILE. Αυτό που δεν καταλαβαίνω είναι γιατί βάζω το -1 και δεν συνεχίζει αλλά μου ζητάει ακόμη ένα input. (Οι γνώσεις μου είναι σε DELPHI οπότε και αυτό που φτιάχνω είναι αρκετό) #include <stdio.h> int main() { int x,i,N,a[100]; float f; printf("write integers until number=-1\n"); N=0; do { scanf("%d\n", &x); N=N+1; a[N]=x; if (x<0) {N=N-1;} }while (x!=-1); }
santeron Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 Κατ' αρχάς βλέπω ένα λαθάκι, πρέπει να αυξήσεις το N αφού βάλεις την τιμή στο a[N] γιατί έτσι ξεκινάς από το a[1] και όχι το a[0] που είναι η αρχή του array. Οπότε άλλαξε το σε a[N]=x ; N=N+1 (το Ν=Ν+1 μπορείς να το γράψεις για ευκολία Ν++ και αν δεν κάνω λάθος θα δουλέψει και το a[N++]=x). Δεύτερον θα είναι καλύτερα το if να το βάλεις από την αρχή (μετά το scanf) οπότε θα είναι if (x >= 0) {a[N++]=x} αλλιώς απλά βγαίνει από το loop. Αν είναι -1 το x να σου πω την αλήθεια δεν βλέπω λόγο γιατί να μην βγει από το do-while.
virxen75 Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 Στο παρακάτω DO-WHILE πρέπει να βάζεις αριθμούς μέχρι να βάλεις το -1, οπότε συνεχίζει εκτός DO-WHILE. Αυτό που δεν καταλαβαίνω είναι γιατί βάζω το -1 και δεν συνεχίζει αλλά μου ζητάει ακόμη ένα input. (Οι γνώσεις μου είναι σε DELPHI οπότε και αυτό που φτιάχνω είναι αρκετό) #include <stdio.h> int main() { int x,i,N,a[100]; float f; printf("write integers until number=-1\n"); N=0; do { scanf("%d\n", &x); N=N+1; a[N]=x; if (x<0) {N=N-1;} }while (x!=-1); } κάνε τις παρακάτω διορθώσεις > ...... N=-1; //οι πίνακες στην C αρχίζουν από την θέση 0 do { scanf("%d",&x);getchar();// το \n δημιουργεί το πρόβλημα ......
smilefreeware Δημοσ. 4 Απριλίου 2011 Μέλος Δημοσ. 4 Απριλίου 2011 Thanks, παίδες αλλά το πρόβλημα επιμένει. < N=-1; //οι πίνακες στην C αρχίζουν από την θέση 0 > Είναι υπό έλεγχο το Ν, δεν υπάρχει πρόβλημα και είναι άσχετο από το loop. Παρακάτω το πρόγραμμα συνεχίζει κανονικά και δίνει τα σωστά αποτελέσματα. < scanf("%d",&x);getchar();// το \n δημιουργεί το πρόβλημα > Τελικά απλώς πέταξα το \n και έφτιαξε. Χωρίς να προσθέσω το getchar(); Thanks again.
bnvdarklord Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 > #include <stdio.h> int main() { int x,i,N,a[100]; float f; printf("write integers until number=-1\n"); N=0; do { scanf("%d", &x); // χωρίς το \n! if (x >= 0) { a[N]=x; N=N+1; } }while (x!=-1); return 0; } edit: ακυρο δεν ειδα οτι το εφτιαξες.
digimyth Δημοσ. 5 Απριλίου 2011 Δημοσ. 5 Απριλίου 2011 > fflush( stdin ); scanf("%d", &x); // χωρίς το \n! Πρόσθεσε και αυτή τη γραμμή πριν την εισαγωγή του αριθμού (scanf()) ή οποία καθαρίζει τον buffer.
virxen75 Δημοσ. 6 Απριλίου 2011 Δημοσ. 6 Απριλίου 2011 > fflush( stdin ); scanf("%d", &x); // χωρίς το \n! Πρόσθεσε και αυτή τη γραμμή πριν την εισαγωγή του αριθμού (scanf()) ή οποία καθαρίζει τον buffer. διάβασε αυτό--->Link
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.