PDA

Visualizza la versione completa : [C]Vocali in una frase


21Edoardo96
08-10-2012, 17:25
Caio,
devo fare un programma che data in infresso una frase (quindi anche gli spazzi tra una parola ed un' altra) dica all'utente quante quante vocali sono presenti nella frase.
Però ho riscontrato 2 problemi quando lo compilo:
1)Mi dice che la fgets è senza cast;
2)Ad ogni
if(frase[cnt] =="vocale") mi dice che comparo un pointer con un integer ma, sinceramente non so proprio cosa voglia dire.

Ecco il codice


//Numero di vocali in una frase
#include <stdio.h>
#include <string.h>
int main()
{
char frase[200]; // assumo una lettura di max 199 caratteri (+ 1 per '\0')
char a,e,i,o,u;
a=0;
e=0;
i=0;
o=0;
u=0;
int vocali, cnt; //cnt serve da contatore
vocali=0;
printf("Scrivi una frase: \n");
fgets("%lf", &frase[0]);
for (cnt = 0; cnt < strlen(frase); cnt++) //strlen() - calcola la lunghezza di una stringa

{
if(frase[cnt] =="a")
{
vocali++;
a++;
}
else if(frase[cnt] =="e")
{
vocali++;
e++;
}
else if(frase[cnt] =="i")
{
vocali++;
i++;
}
else if(frase[cnt] =="o")
{
vocali++;
o++;
}
else if(frase[cnt] =="u")
{
vocali++;
u++;
}
}
printf("Numero di vocali %d\n",vocali);
printf("Numero di 'a' %d\n",a);
printf("Numero di 'e' %d\n",e);
printf("Numero di 'i' %d\n",i);
printf("Numero di 'o' %d\n",o);
printf("Numero di 'u' %d\n",u);
return 0;
}


Ciao e grazie mille in anticipo

LeleFT
08-10-2012, 17:28
I caratteri (tipo char), vanno espressi con apici singoli, non con dippi apici con cui, appunto, si identificano le stringhe (puntatori a carattere).

Sostituisci i doppi apici con i singoli apici.



'a' è il carattere (char) che rappresenta la lettera a
"a" è una stringa (puntatore a char) di lungehzza 1 contenente la lettera a.


Non ho controllato la correttezza del resto del codice, ho solo spiegato perchè dell'errore sul confronto fra puntatore e intero.


Ciao. :ciauz:

21Edoardo96
08-10-2012, 17:38
Ok grazie,
l'ho sistemato come mi hai detto di fare e adesso mi da solo problema nellla fgets


//Numero di vocali in una frase
#include <stdio.h>
#include <string.h>
int main()
{
char frase[200]; // assumo una lettura di max 199 caratteri (+ 1 per '\0')
char a,e,i,o,u;
a=0;
e=0;
i=0;
o=0;
u=0;
int vocali, cnt; //cnt serve da contatore
vocali=0;
printf("Scrivi una frase: \n");
fgets("%lf", &frase[0]);
for (cnt = 0; cnt < strlen(frase); cnt++) //strlen() - calcola la lunghezza di una stringa

{
if(frase[cnt] =='a')
{
vocali++;
a++;
}
else if(frase[cnt] =='e')
{
vocali++;
e++;
}
else if(frase[cnt] =='i')
{
vocali++;
i++;
}
else if(frase[cnt] =='o')
{
vocali++;
o++;
}
else if(frase[cnt] =='u')
{
vocali++;
u++;
}
}
printf("Numero di vocali %d\n",vocali);
printf("Numero di 'a' %d\n",a);
printf("Numero di 'e' %d\n",e);
printf("Numero di 'i' %d\n",i);
printf("Numero di 'o' %d\n",o);
printf("Numero di 'u' %d\n",u);
return 0;
}


Come posso sistemarlo?

MItaly
08-10-2012, 17:46
La fgets non si usa così... Hai letto la sua documentazione?

21Edoardo96
08-10-2012, 18:04
Ciao
l'ho sistemato così:


printf("Scrivi una frase: \n");
fgets(frase);


Però penso proprio che sia sbagliato, cosa devo ancora sistemare

MItaly
08-10-2012, 18:09
:stordita:

Originariamente inviato da MItaly
Hai letto la sua documentazione?

21Edoardo96
08-10-2012, 18:11
Scusami,
potresti mettermi gentilmente il link in quanto io non riesco a trovarlo?

MItaly
08-10-2012, 18:20
Secondo risultato su Google cercando "fgets" :stordita:
http://digilander.libero.it/uzappi/C/librerie/funzioni/fgets.html

21Edoardo96
08-10-2012, 18:46
Ciao,
ho letto il link che mi hai consigliato ma non ho capito cosa devo mettere in :

FILE *stream

MItaly
08-10-2012, 18:55
Lo stream da cui leggere; nel tuo caso metterai stdin (lo stream da cui leggono di default scanf & co, che normalmente è collegato all'input da tastiera), ma ovviamente è possibile specificare anche uno stream che rappresenta un file.

Loading