sk8harddiefast Δημοσ. 4 Μαρτίου 2011 Δημοσ. 4 Μαρτίου 2011 Η ασκηση λεει: Το ειδος ενως γραμματοσημου καθοριζεται απο τον χαρακτηρα Ε για εσωτερικο, Α για εξωτερικο και Τ για τοπικες αποστολες. Το γραμ/μο κατηγοριας Ε κανει 0.23 ευρω, κατη/ριας Α 0.70 ευρω και κατη/ριας Τ 0.15 ευρω. Να γραφτει προγραμμα που να ζηταει να δωσουμε ποσοστητα και ειδος γραμματοσημων που θελουμε και να υπολογιζει το ποσο που πρεπει να πληρωσουμε. Εχω κανει αυτο >#include <stdio.h> #define E 0.23 #define A 0.70 #define T 0.15 int main() { int posothta; char grammatoshmo; float apotelesma; printf ("Epilexte posothta:"); scanf ("%d" , &posothta); printf ("Epilexte typo grammatoshmou (E,A,T):"); scanf ("%c" , &grammatoshmo); if (grammatoshmo==E) { apotelesma=posothta*grammatoshmo; printf ("%f", apotelesma); } else if (grammatoshmo==A) { apotelesma=posothta*grammatoshmo; printf ("%f", apotelesma); } else { apotelesma=posothta*grammatoshmo; printf ("%f", apotelesma); } } αλλα μετα την δευτερη printf σκαει!!!! Α!!! Τρεχω BSD και το κανω με τον gcc45!
thanos713 Δημοσ. 4 Μαρτίου 2011 Δημοσ. 4 Μαρτίου 2011 >#include <stdio.h> #define E 0.23 #define A 0.7 #define T 0.15 int main() { int posothta; char grammatoshmo; float apotelesma; printf ("Epilexte typo grammatoshmou (E,A,T):"); scanf ("%c" , &grammatoshmo); printf ("Epilexte posothta:"); scanf ("%d" , &posothta); if (grammatoshmo=='E') { apotelesma=posothta*E; printf ("%f\n", apotelesma); } else if (grammatoshmo=='A') { apotelesma=posothta*A; printf ("%f\n", apotelesma); } else if (grammatoshmo=='T') { apotelesma=posothta*T; printf ("%f\n", apotelesma); } else { printf("Lathos epilogi.\n"); } }
V.I.Smirnov Δημοσ. 4 Μαρτίου 2011 Δημοσ. 4 Μαρτίου 2011 Aν την γραμμή >printf ("Epilexte typo grammatoshmou (E,A,T):"); την κάνεις >printf ("Epilexte typo grammatoshmou (E,A,T):"); _flushall(); θα τρέχει. Αλλά το αποτέλεσμα είναι λάθος. Έχεις μια αβλεψία στις πράξεις. Βρες την ! @thanos713 Με πρόλαβες. Δεν έπρεπε να του το δώσεις αμέσως έτοιμο. Τους κακομαθαίνεις έτσι... -
sk8harddiefast Δημοσ. 4 Μαρτίου 2011 Μέλος Δημοσ. 4 Μαρτίου 2011 Δεν καταλαβαινω. Γιατι αν δωσω πρωτα το >printf ("Epilexte typo grammatoshmou (E,A,T):"); scanf ("%c" , &grammatoshmo); τρεχει ενω αν το δωσω δευτερο δν τρεχει!!! Ολα τα αλλα τα διορθωσα και ολος ο αλλος κωδικας ηταν ιδιος εκτως απο αυτο! Και μου εβγαζε τα ιδια μεχρι που το αλλαξα!
sk8harddiefast Δημοσ. 4 Μαρτίου 2011 Μέλος Δημοσ. 4 Μαρτίου 2011 Στο BSD το stdout το εχω δει πολλες φορες. Προφανως το stdin ειναι το αντιθετο! Τ ι ειναι ομως ακριβως? Δλδ οταν παταω ENTER παιρνει και αυτο μια τιμη?
sk8harddiefast Δημοσ. 5 Μαρτίου 2011 Μέλος Δημοσ. 5 Μαρτίου 2011 ΟΚ! Με καλυψες Ευχαριστω Οποτε τωρα μπορω να παω στην επομενη ασκηση Ουφ. Παλουκι ειναι η C!
thanos713 Δημοσ. 5 Μαρτίου 2011 Δημοσ. 5 Μαρτίου 2011 Μην τονε κλαις τον αετό, όπου πετά και βρέχει,μόνο να κλαις ένα πουλί, όπου φτερά δεν έχει. Αφιερωμένο.
virxen75 Δημοσ. 5 Μαρτίου 2011 Δημοσ. 5 Μαρτίου 2011 δεν χρειάζεται να αντιστραφεί η σειρά των scanf > ............ printf ("Epilexte posothta:"); scanf ("%d" , &posothta);getchar(); printf ("Epilexte typo grammatoshmou (E,A,T):"); scanf ("%c" , &grammatoshmo);getchar(); ...........
Evgenios1 Δημοσ. 5 Μαρτίου 2011 Δημοσ. 5 Μαρτίου 2011 Νωμιζω πως ενα linefeed ειναι αρκετο ( scanf("%d\n",...) ) Ετσι ωστε να ξερει η xcanf οτι αυτο που θες ειναι αναμεσα απο την αρχη και το linefeed
Evgenios1 Δημοσ. 5 Μαρτίου 2011 Δημοσ. 5 Μαρτίου 2011 Δηλαδη? Εστω οτι θελεις να διαβασεις εναν αριθμο που εχει ενα φορματ τυπου ID-23423Z εσυ πρεπει να γτιαξεις ενα query για την scanf καπως ετσι ID-%dZ\n . Δηλαδη ο χρηστης θα σου δωσει ID-nnnZ enter και εσυ θες το nnn ως αριθμος. Σε αυτη τη περιπτωση αν βαλεις ID-%d χωρις το Ζ η scanf θα σου διαβασει τον αριθμο, αλλα ο getpointer θα μεινει στο Ζ με αποτελεσμα οταν πας να διαβασεις την console θα αρχισεις το διαβασμα απο το Z Στην εικονα η scanf 1 διαβαζει οτι ειναι υπογραμμισμενο με κοκκινο και η scanf 2 (21) οτι ειναι με πρασινο (Z\n) Για να μην γινει αυτο, εσυ πρεπει να δηλωσεις οτι θες να διαβασεις ID-%dZ\n
lion2486 Δημοσ. 5 Μαρτίου 2011 Δημοσ. 5 Μαρτίου 2011 Θα μπορούσε καλύτερα να υλοποιήσει κάτι που να συμπεριφέρεται σαν την >fflush(stdin); (δεν ενδεικνύεται η χρήση της) με μια >while(getchar() != '\n') ; και ακόμα καλύτερα να έψαχνε και για EOF.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.