Ξεκινήσαμε στην σχολή την γλώσσα C και έχω κάποιες ασκήσεις για παράδοση.Ομολογώ ότι στην μία τα βρήκα σκούρα.
Η εκφώνηση είναι η εξής:''Να γράψετε ένα πρόγραμμα το οποίο να διαβάζει:
Α. μια σειρά χαρακτήρων (string),
Β. έναν ακέραιο και
Γ. ένα δεκαδικό (πραγματικό)
και με τη βοήθεια της συνάρτησης printf( ) να εμφανίζει στην οθόνη τουλάχιστον 3 χαρακτήρες ή ψηφία αλλά όχι περισσότερα από 7, για κάθε εισαγόμενη τιμή. Να κάνετε πολλές δοκιμές εισάγοντας τιμές από 1 μέχρι 10 χαρακτήρες ή ψηφία.''
Η δική μου υλοποίηση είναι η εξής:
#include <stdio.h>
main ()
{
int x;
char a[80];
float b;
printf("δώσε τιμές: \n");
scanf("%7d %7s %7f",&x,&a,&b);
printf("\n δώσατε τις τιμές: %03d %3s %3f\n" , x,a,b);
}
Η τελευταία γραμμή είναι σίγουρα λάθος.
Το παραπάνω πρόγραμμα θα πρέπει να εμφανίζει από τρεις έως επτά χαρακτήρες,αριθμούς και τα λοιπά.Οπότε με την scanf το αναγκάζω να διαβάσει μέχρι επτά.Στην περίπτωση που διαβάσει λιγότερα από 3(πχ έναν διψήφιο ακέραιο όπως ο 25),πρέπει η printf να έρθει και να το κάνει 025(δηλαδή να βάλει το μηδέν μπροστά).Το ίδιο πρέπει να συμβαίνει και με τους χαρακτήρες και με τον float.
Αν μπορεί κάποιος να βοηθήσει θα μουν ευγνώμων.
Εμφάνιση 1-15 από 22
Θέμα: Βοήθεια στην C
-
04-04-12, 23:02 Βοήθεια στην C #1
-
05-04-12, 13:20 Απάντηση: Βοήθεια στην C #2
Με τον float έχω κι εγώ ένα θέμα, όταν μας δώσει στην είσοδο μεγαλύτερη τιμή από 7 ψηφία (int.frac). Αλλιώς...
Κώδικας:scanf( "%f", &f ); printf( "%07.2f\n", f );
Για το string, αν "πιάνονται" ως χαρακτήρες τα padding κενά που βάζει η printf, τότε το έχεις επίσης σωστά, αλλιώς (με το '0' ως padding char)...
Κώδικας:scanf( "%7s", s ); if ( strlen(s) < 3 ) { for (int i=0; i < 2; i++) putchar('0'); puts(s); } else printf( "%7s\n", s );
-
05-04-12, 14:34 Απάντηση: Βοήθεια στην C #3
Μια και το λύνετε και οι δύο με τον ίδιο τρόπο, υποθέτω ότι δεν κατάλαβα καλά την εκφώνηση, αλλά
εγώ το παραπάνω το καταλαβαίνω ως ο χρήστης θα δίνει ό,τι θέλει και θα διαβάζεται κανονικά ολόκληρη η είσοδος. Μετά το printf θα εμφανίζει από 3 μέχρι 7 ψηφία ανάλογα με το μήκος. Αν δώσει ο χρήστης Tria, η scanf θα πρέπει να διαβάσει κανονικά όλο το Tria και η printf να εμφανίσειTriTria. Αν δώσει TriaPoylakiaKa8ontai, η scanf θα διαβάσει και πάλι όλο το string και η printf θα εμφανίσει TriaPoy. Αυτό που λέω δηλαδή είναι ότι στην scanf δεν πρέπει να δηλώνεται το 7.
Μπορεί φυσικά να ερμήνευσα την εκφώνηση λανθασμένα.Τελευταία επεξεργασία από το μέλος imitheos : 05-04-12 στις 15:45.
"I like offending people, because I think people who get offended should be offended" - Linus Torvalds
"Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
Γα.... την πολιτική ορθότητα.
-
05-04-12, 14:39 Απάντηση: Βοήθεια στην C #4
Δεν γνωρίζουμε και την ύλη που έχουν καλύψει (σιχαμένη scanf )
-
05-04-12, 14:48 Απάντηση: Βοήθεια στην C #5
Τελικά η δική σου ερμηνεία είναι η σωστή.(έπεσα καταλάθος στις λύσεις του μεταπτυχιακού που κάνει μάθημα στο άλλο τμήμα και το υλοποιεί σύμφωνα με το σκεπτικό σου.Ο δικός μας είναι τρα λα λα τρα λα λω..''βρείτε το στο google μας είπε'')
Πως το υλοποιούμε τότε;;Πως γίνεται η printf να θέτει ταυτόχρονα δύο περιορισμούς(όχι μικρότερο από το 3 και όχι μεγαλύτερο από το 7);;
-
05-04-12, 14:51 Απάντηση: Βοήθεια στην C #6
-
05-04-12, 14:58 Απάντηση: Βοήθεια στην C #7
Γι' αυτό εγώ διαβάζω τα πάντα ως strings, και μετά τα μετατρέπω σε ότι χρειάζομαι.
-
05-04-12, 15:04 Απάντηση: Βοήθεια στην C #8
-
05-04-12, 15:04 Απάντηση: Βοήθεια στην C #9
Όσο για τις μετατροπές δεν θυμάμαι αν τα είχαμε πει στην θεωρία.Δύο μαθήματα έχουμε κάνει όλα και όλα και αυτά μισά και στραβά.
Στο εργαστήριο μας είπαν να μην χρησιμοποιήσουμε συνθήκες.
Αν θέλω τώρα να υλοποιήσω αυτό που είπε ο hmitheos.Πως μπορώ να το κάνω;;
#include <stdio.h>
main ()
{
int x;
char a[80];
float b;
printf("δώσε τιμές: \n");
scanf("%d %s %f",&x,&a,&b);
Η printf πως πρέπει να δομηθεί;;
Σωστό.Μου διέφυγε παραπάνω.Το Tria το εμφανίζει κανονικά.
Αν δίναμε Tr θα έπρεπε να συμπλήρωνε με ένα κενό μπροστά δηλαδή (_Tr)
-
05-04-12, 15:07 Απάντηση: Βοήθεια στην C #10
Δεν έχω καταλάβει τι ακριβώς εννοεί ο imitheos (γιατί Tri κι όχι Tria ; )
-
05-04-12, 15:12 Απάντηση: Βοήθεια στην C #11
-
05-04-12, 15:19 Απάντηση: Βοήθεια στην C #12
Βασικά, η scanf() είναι (arguably) η πιο προβληματική, ή μάλλον η πιο error-prone, συνάρτηση της γλώσσας και in real life δεν την χρησιμοποιεί κανείς. Οπότε είναι ολίγον (έως πολύ) pointless η όλη άσκηση εν γένη!
Οκ, καλό είναι να μάθετε formated input (κυρίως για ανάγνωση well-defined, formated data από αρχεία, με fscanf() αλλά μέχρι εκεί.)
Θα μου πεις, και με το δίκιο σου, πως εσένα ποσώς σε ενδιαφέρει, αφού το ζητάει η άσκηση. Απλώς εξηγώ γιατί δεν προτίθεμαι εγώ να κάτσω να πονοκεφαλιάσω για την scanf
Καλή συνέχεια.
-
05-04-12, 15:24 Απάντηση: Βοήθεια στην C #13
-
05-04-12, 15:47 Απάντηση: Βοήθεια στην C #14"I like offending people, because I think people who get offended should be offended" - Linus Torvalds
"Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
Γα.... την πολιτική ορθότητα.
-
05-04-12, 15:58 Απάντηση: Βοήθεια στην C #15
Η κλασική χαζοάσκηση σχολής
Ίσως την έχει βάλει για να δει ο μαθητής τις διάφορες επιλογές της printf
Spoiler:
Οπότε συνδυάζεις το width για το ελάχιστο 3 και την precision για το μέγιστο 7.
Αν δουλεύεις linux, *bsd, κτλ, μπορείς να τρέχεις σε ένα τερματικό "man εντολή" (πχ man printf) και να βλέπεις την σύνταξη της και ένα κάρο χρήσιμες πληροφορίες. Σε Windows δεν γνωρίζω αλλά σίγουρα θα υπάρχει κάτι αντίστοιχο. Θα σου πει o migf1 τι παίζει."I like offending people, because I think people who get offended should be offended" - Linus Torvalds
"Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
Γα.... την πολιτική ορθότητα.
Παρόμοια Θέματα
-
Βοήθεια στην VB
Από Anna_gr στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 1Τελευταίο Μήνυμα: 06-06-11, 01:40 -
Βοηθεια στην C
Από kotsos133 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 13Τελευταίο Μήνυμα: 20-03-11, 14:23 -
Βοήθεια στην C
Από chas στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 3Τελευταίο Μήνυμα: 21-10-10, 00:23 -
βοηθεια στην c++
Από katerinaa στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 1Τελευταίο Μήνυμα: 15-05-08, 11:54 -
ΒΟΗΘΕΙΑ στην C
Από angelspy στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 15Τελευταίο Μήνυμα: 23-11-06, 03:21
Bookmarks