Data seq. caratteri, quante vocali?

di il
2 risposte

Data seq. caratteri, quante vocali?

Salve, purtroppo sono di nuovo qua a dare fastidio >.<
Devo scrivere un programma (un esercizio semplicemente) che, inserita una sequenza di caratteri, mi restituisca in output quanti di questi sono vocali.

Ho scritto questo:
#include <stdio.h>

void main(){
char carattere;
int cont=0, i, contvoc = 0;
printf("Quanti caratteri vuoi inserire?\t");
scanf("%d",&cont);
for(i=0; i<cont; i++){
carattere = getchar();
if((carattere == 'a') || (carattere == 'e') || (carattere == 'i') || (carattere == 'o') || (carattere == 'u')){
    contvoc = contvoc + 1;
    carattere = 0;}
        }
printf("Ci sono %d vocali!\n",contvoc);
}
Il problema è che se voglio inserire tipo 5 caratteri, me ne fa inserire 2, se ne inserisco 2 me ne inserisce 1, se ne inserisco uno solo il programma va direttamente alla fine.
Ho capito che l'errore sta subito dopo il for, ma non riesco a capire cosa fare per risolverlo.
Vi ringrazio per qualsiasi aiuto riusciate a darmi, grazie!

2 Risposte

  • Re: Data seq. caratteri, quante vocali?

    Col getchar() è molto facile che ti venga memorizzato all'invio dell'input qualcosa in più che poi viene passato nel ciclo for al successivo getchar()...Quindi è utile effettuare una pulitura del buffer prima di ogni getchar() attraverso la funzione fflush(stdin).

    Spero di essere stato utile.
  • Re: Data seq. caratteri, quante vocali?

    Eduadie ha scritto:


    Col getchar() è molto facile che ti venga memorizzato all'invio dell'input qualcosa in più che poi viene passato nel ciclo for al successivo getchar()...Quindi è utile effettuare una pulitura del buffer prima di ogni getchar() attraverso la funzione fflush(stdin).

    Spero di essere stato utile.
    Mi hai fatto imparare una cosa nuova, ti ringrazio di cuore!
    Adesso funziona
Devi accedere o registrarti per scrivere nel forum
2 risposte