Brisingr Δημοσ. 13 Νοεμβρίου 2010 Δημοσ. 13 Νοεμβρίου 2010 Έχω το εξής πρόβλημα... Προσπαθώ να κάνω την exercise 1-12 από το βιβλίο του Ritchie , η οποία πρέπει να μετρά και να εμφανίζει τις λέξεις στο input. Εγώ θέλω να την κάνω να διαβάζει τόσες λέξεις μέχρι να πατήσει enter ο χρήστης. Έχω γράψει λοιπόν αυτό >#include <stdio.h> #include <stdlib.h> #define IN 1 #define OUT 0 main() { int c, nw=0, state=OUT; while((c=getchar())!='\n'){ if(c==' '||c=='\t') { state=OUT; printf("\n");} else { if (state==OUT){state=IN; ++nw;} else printf("%c", c);} } printf("\n %d words total\n", nw); system("PAUSE"); } Το πρόβλημα είναι πως αν δώσω ως Input το εξής: grafw sto insomnia, το output είναι: rafw to nsomnia Με λίγα λόγια για κάποιο περίεργο λόγο που εγώ δεν μπορώ να καταλάβω, μου "τρώει" τον πρώτο c μιας λέξης, και εφόσον το state τότε θα είναι OUT και το c είναι χαρακτήρας, έπρεπε να το εμφανίζει...
V.I.Smirnov Δημοσ. 13 Νοεμβρίου 2010 Δημοσ. 13 Νοεμβρίου 2010 Καθόλου περίεργο. Απλώς δεν τυπώνεις τον χαρακτήρα ! Την πρώτη φορά που η εκτέλεση φτάνει στην γραμμή { state=IN; ++nw; } αυξάνεται ο μετρητής nw για τις λέξεις, το STATE γίνεται IN και η εκτέλεση επιστρέφει στο while για την αναμονή του επόμενου χαρακτήρα. Πού είναι η εκτύπωση του c ; Την δεύτερη φορά και έπειτα, το STATE είναι ήδη IN και η εκτέλεση μεταφέρεται άμεσα στην else printf("%c", c);} όπου και εκτυπώνεται. Tην γραμμή { state=IN; ++nw; } κάνε την { state=IN; ++nw; printf("%c", c); } και θα δουλέψει. Καλημέρα....
Brisingr Δημοσ. 13 Νοεμβρίου 2010 Μέλος Δημοσ. 13 Νοεμβρίου 2010 Σε ευχαριστώ πολύ.. Τελικά αν κολήσει κάτι στο μυαλό σου, ακόμη και το πιο απλό να είναι δεν το βλέπεις..
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.