Jump to content



προβλημα με c


oxide

Recommended Posts

Δημοσιεύτηκε

Η εκφωνηση

Να γραφεί πρόγραμμα το οποίο να λαμβάνει από το χρήστη 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);

//}

}

}

Για δες αυτο:

#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...

ναι..με αυτο λυθηκε το 1 προβλημα..ευχαριστω...

το getch(); μετα την λουπα γτ το βαζεις?

Αρχική απάντηση από oxide

ναι..με αυτο λυθηκε το 1 προβλημα..ευχαριστω...

το getch(); μετα την λουπα γτ το βαζεις?

Στην dev c++ που τρεχω εγω οταν εκτελεστει το προγραμμα κλεινει η κονσολα...οποτε πρεπει να βαλω κατι ωστε να μην κλεινει και να μπορω να δω τι εχει βγαλει.

Γενικα δεν εχω συναντησει καποια κονσολα που να μην εχει αυτην την συμπεριφορα.

Σε πιο IDE γραφεις εσυ?

  • 2 weeks later...

’λλος τρόπος για να διαβάσεις χαρακτήρες (αν και χρησιμοποιείται κυρίως για αριθμούς) είναι η scanf("%c",&a); οπου α μεταβλητή τύπου char.

Όταν διαβάζεις χαρακτήρες με scanf βαζε και μια εντολή fflush(stdin); (το stdin το βάζεις επειδή το standar input είναι το πληκτρολόγιο απο οπου κ διαβάζεις τιμές) μετά η οποία καθαρίζει το buffer οποτε δεν πάει το enter ως τιμή στην επόμενη μεταβλητη που διαβάζεις.

Τέλος για να σου βγάζει "Πιέστε ένα πλήκτρο για συνέχεια..." η εντολή είναι system("PAUSE");

ευχαριστω για το ενδιαφερον...

αλλα το θεμα ειναι καπως παλιο..το ελυσα τελικα το προβλημα...

με ειχε βοηθησει πολυ και ο kallileo

στην εκδοση compiler που εχω το βγαζει αυτοματα...βεβαια η εκδοση σαν πακετο ειναι αμυρο χαλι..αλλα αυτο το κανει..

αυτο που λες με την fflush()

το ειχα δοκιμασει και δουλευει...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.