Εργαστήριο Τεχνολογίας Λογισμικού
+2 votes
238 views

Έχω γράψει κανονικά όλο το κώδικα που διαβάζει, κάνει τις πράξεις και απλοποιεί το κλάσμα του αποτελέσματος. Όμως όταν προσπαθώ να προσθέσω μια εντολή επανάληψης (έχω δοκιμάσει και for και while) για να εκτελείται το πρόγραμμα n φορές (όσες θέλει ο χρήστης) το πρόγραμμα δεν τρέχει και μου εμφανίζει "cant read integer number". Τι κάνω λάθος;

in progintro by (180 points)
edited by | 238 views
0

Μοιάζει λίγο με αυτό. Μήπως κανείς κάνα περίεργο SKIP_LINE;

0

Δεν έχω βάλει SKIP_LINE στον κώδικα μου.

1 Answer

+2 votes

Hello!
Φανταζομαι οτι χρησιμοποιεις getchar() για τον χαρακτηρα της πραξης και READ_INT() για τους ακεραιους.
Το getchar() διαβαζει κυριολεκτικα οποιον χαρακτηρα βρει μπροστα του, το οποιο μπορει και να ειναι το κενο ή η αλλαγη γραμμης που χρησιμοποιεις για να ξεχωρισεις τις εισοδους σου. Ετσι το getchar() δεχεται πχ ενα κενο και το READ_INT() που εχεις βαλει ακριβως μετα, αντι να βρει αριθμο, πετυχαινει το "+" που προσπαθουσες να διαβασεις με το getchar() και πεταει error.
Δοκιμασε να βαλεις αλλο ενα getchar() στον αερα πριν διαβασεις το "+" (ή οποια αλλη πραξη) για να "φαει" το κενο ή το χαρακτηρα αλλαγης γραμμης και μετα διαβασε κανονικα την εισοδο σου.
Παραδειγμα κωδικα:

by (690 points)
edited by
0

Θα πρότεινα, εαν ο ερωτών γράφει σε pazcal να χρησιμοποιήσει την SKIP_LINE(), η οποία είναι αρκετά απλούστερο να καταλάβει τι κάνει και πώς.

0

Σε ευχαριστώ πάρα πολύ το πρόγραμμα τρέχει κανονικά τώρα.

301 questions

289 answers

288 comments

770 users