PDA

Visualizza la versione completa : [C] Calcolo numero di vocali in una parola (era: Programma abbastanza banale)


ZioDema2
18-11-2008, 18:36
Ciao a tutti,
premetto che sto studiando C all'uni e che ne so ancora molto poco però per esercitazione faccio i programmi che ci vengono consigliati.

Vendiamo a noi, devo fare un prog che letta una parola da input deve contare il numero di vocali e numerarle, ho fatto il codice ma una volta eseguita, crasha penso perchè si inneschi un ciclo infinito sicuramente a causa di errori di sintassi miei visto che non ricordo alcune cosucce.
Ecco il codice:



#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

char parola[30];
int k;
int a,e,i,o,u;

//Putting char by char into an array
printf("Inserire parola: ");
scanf("%s",parola);

//Comparing the char with the vowels
for(k=0; parola[k]!='\0'; i++)
{
if(parola[i]=='a')
a++;
if(parola[i]=='e')
e++;
if(parola[i]=='i')
i++;
if(parola[i]=='o')
o++;
if(parola[i]=='u')
u++;
}

//Showing the numbers of vowels
if(a!=0)
printf("Il numero di a nella parola è: %d\n",a);
if(e!=0)
printf("Il numero di e nella parola è: %d\n",e);
if(i!=0)
printf("Il numero di i nella parola è: %d\n",i);
if(o!=0)
printf("Il numero di o nella parola è: %d\n",o);
if(u!=0)
printf("Il numero di u nella parola è: %d\n",u);

system("pause");
}


Grazie a tutti anticipatamente!

LeleFT
18-11-2008, 18:42
Come richiesto dal regolamento, il titolo della discussione non deve essere dispersivo, ma deve dare un'idea della discussione.

Di "programmi abbastanza banali" se ne possono creare infiniti.

Inoltre, il codice va postato all'interno degli appositi tag
e .

Correggo titolo e, ove possibile, l'impostazione del codice.


Ciao. :ciauz:

ZioDema2
18-11-2008, 18:46
Grazie a scusa non accadrà più :)

oregon
18-11-2008, 19:13
Beh ... e' un errore di "distrazione" ...

Ricorda che stai usando k come indice ... in rosso gli errori ...


for(k=0; parola[k]!='\0'; i++)
{
if(parola[i]=='a')
...

ZioDema2
18-11-2008, 19:30
Grazie che fesseria abnorme :S
Ah un altra domanda, xke se inizializzo cosi:




int a,e,o,i,u;



non funziona (mi da valori sballati), mentre se inizializzo



int a=0;
int e=0;
int i=0;
int o=0;
int u=0;


MI da valori giusti?

Grazie :) :)

oregon
18-11-2008, 20:28
Perche' nel primo caso il valore assunto da ogni variabile NON e' zero, ma un numero casuale ...

MacApp
18-11-2008, 20:56
Originariamente inviato da ZioDema2
...
sicuramente a causa di errori di sintassi miei
...

Tranquillo se ci fossero errori di sintassi il compilatore ti stroncherebbe sul nascere. A tal proposito ti consiglio di aumentare il livello d'attenzione del compilatore. Ad esempio compilando con:


$ gcc -Wall -ansi -pedantic main.c


si ottiene:


main.c: In function 'main':
main.c:44: warning: control reaches end of non-void function


Il problema è che una sintassi corretta non implica necessariamnte una semantica corretta.
;-)

Loading