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);

//}

}

}

Link to comment
Share on other sites

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

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

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

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

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

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

Link to comment
Share on other sites

  • 2 weeks later...

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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.