oxide Δημοσιεύτηκε Ιανουάριος 11, 2008 #1 Δημοσιεύτηκε Ιανουάριος 11, 2008 Η εκφωνησηΝα γραφεί πρόγραμμα το οποίο να λαμβάνει από το χρήστη 10 χαρακτήρες και να τους καταχωρεί σε έναν πίνακα. Στη συνέχεια το πρόγραμμα να ελέγχει αν κάποιος χαρακτήρας έχει δοθεί περισσότερες από 1 φορές και να εκτυπώνει ανάλογο μήνυμα του τύπου: "Ο χαρακτήρας x δόθηκε y φορές"To προγραμμα ...στα σχολια εχω μια βελτιωση του προγραμματος ..ωστε να μην εμφανιζει 2 φορες τα ιδια.Βασικο προβλημα ειναι οτι δεν διαβαζει 10 φορες για εισοδο αλλα 5!! ..πρωτη φορα το παθαινω...αλλο προβλημα ειναι οτι αφου διαβασει ...πεταει σφαλμα...απο το debug δεν εβγαλα ακρη..#include <stdio.h>#include <string.h>#include "genlib.h"#include "simpio.h"main(){char pin[10];char kot;int i,j,sum;// int k;//bool exists;for (i=0;i<10;i++){pin = getchar();}for (i=0; i<10;i++){ // exists=FALSE; sum=0; kot = pin; for (j=0; j<10;j++){ if (pin[j]==kot){ sum++; }} // for (k=i; k>0; k--){// if (pin[j]==pin[k]){// exists=TRUE;// // } // if (exists=FALSE) && (sum>1){ printf("o xarakt. %s yparxei %d fores",pin,sum);//}}}
kallileo Ιανουάριος 11, 2008 #2 Ιανουάριος 11, 2008 Μηπως διαβαζει 5 επειδη παιρνει και το ENTER-RETURN ως χαρακτηρα?
oxide Ιανουάριος 11, 2008 Author #3 Ιανουάριος 11, 2008 λες?δεν το σκεφτηκα...υπαρχει καποιος αλλος τροπος να διαβασω χαρακτηρες ?
kallileo Ιανουάριος 11, 2008 #4 Ιανουάριος 11, 2008 Για δες αυτο:#include <stdio.h>#include <string.h>#include <conio.h>main(){ char pin[10]; char kot,s; int i,j,sum; for (i=0;i<10;i++) { pin = getch(); printf("You inserted: %c\n", pin); } getch();}H printf ειναι για check...
oxide Ιανουάριος 11, 2008 Author #5 Ιανουάριος 11, 2008 ναι..με αυτο λυθηκε το 1 προβλημα..ευχαριστω...το getch(); μετα την λουπα γτ το βαζεις?
kallileo Ιανουάριος 11, 2008 #6 Ιανουάριος 11, 2008 Αρχική απάντηση από oxide ναι..με αυτο λυθηκε το 1 προβλημα..ευχαριστω...το getch(); μετα την λουπα γτ το βαζεις? Στην dev c++ που τρεχω εγω οταν εκτελεστει το προγραμμα κλεινει η κονσολα...οποτε πρεπει να βαλω κατι ωστε να μην κλεινει και να μπορω να δω τι εχει βγαλει.Γενικα δεν εχω συναντησει καποια κονσολα που να μην εχει αυτην την συμπεριφορα.Σε πιο IDE γραφεις εσυ?
oxide Ιανουάριος 11, 2008 Author #7 Ιανουάριος 11, 2008 visual c++ 6.0...οχι σε μενα δεν κλεινει...βγαζει μηνημα "πατηστε πληκτρο ..κτλ"
Fotis_1989 Ιανουάριος 20, 2008 #9 Ιανουάριος 20, 2008 ’λλος τρόπος για να διαβάσεις χαρακτήρες (αν και χρησιμοποιείται κυρίως για αριθμούς) είναι η scanf("%c",&a); οπου α μεταβλητή τύπου char.Όταν διαβάζεις χαρακτήρες με scanf βαζε και μια εντολή fflush(stdin); (το stdin το βάζεις επειδή το standar input είναι το πληκτρολόγιο απο οπου κ διαβάζεις τιμές) μετά η οποία καθαρίζει το buffer οποτε δεν πάει το enter ως τιμή στην επόμενη μεταβλητη που διαβάζεις.Τέλος για να σου βγάζει "Πιέστε ένα πλήκτρο για συνέχεια..." η εντολή είναι system("PAUSE");
oxide Ιανουάριος 21, 2008 Author #10 Ιανουάριος 21, 2008 ευχαριστω για το ενδιαφερον...αλλα το θεμα ειναι καπως παλιο..το ελυσα τελικα το προβλημα...με ειχε βοηθησει πολυ και ο kallileo
kallileo Ιανουάριος 21, 2008 #11 Ιανουάριος 21, 2008 Το system("PAUSE"); δεν θεωρειται καλη γενικα ως καλη λυση...http://www.gidnetwork.com/b-61.html
oxide Ιανουάριος 21, 2008 Author #12 Ιανουάριος 21, 2008 στην εκδοση compiler που εχω το βγαζει αυτοματα...βεβαια η εκδοση σαν πακετο ειναι αμυρο χαλι..αλλα αυτο το κανει..αυτο που λες με την fflush()το ειχα δοκιμασει και δουλευει...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.