PDA

Visualizza la versione completa : [c]contare consonanti e vocali


cristianc
08-02-2009, 12:23
Ciao,
devo scrivere un programma che chiede di immattere una stringa, cio un vettore di char.
Lo scopo del programma visualizzare sullo schermo il numero di vocali e consonanti presenti nel vettore.

Ho preparato una bozza del programma:

main()
{
int i,n,voc,con;
char str[100];
printf("Inserire una stringa composta da lettere dell'alfabeto e punteggiatura\n");
scanf("%s",&str);
n=0;
i=0;
while (s[i] != '\0') {
n++;
i++;
}
voc=0;
con=0;
for(i=0;i<n;i++) {


C' un algoritmo efficace per contare vocali e consonanti?

oregon
08-02-2009, 12:44
Confronta ogni singolo carattere con i caratteri

a e i o u

se verifichi l'uguaglianza aumenti il contatore delle vocali, altrimenti aumenti il contatore delle consonanti.

cristianc
08-02-2009, 13:38
e se non una consonante?

oregon
08-02-2009, 14:06
Originariamente inviato da cristianc
e se non una consonante?

Naturalmente dovrai testare prima se e' un carattere alfabetico (dalla a alla z) e poi, se non e' una vocale, e' una consonante ...

cristianc
08-02-2009, 14:39
Originariamente inviato da oregon
Naturalmente dovrai testare prima se e' un carattere alfabetico (dalla a alla z) e poi, se non e' una vocale, e' una consonante ...
grazie, ora provo...non ci avevo pensato! :zizi:

cristianc
08-02-2009, 20:04
Ho scritto il programma, ma ricevo quest'errore in compilazione:


cons_voc.c: In function main:
cons_voc.c:8: warning: format %s expects type char *, but argument 2 has type char (*)[100]

questo invece il codice del programma:


#include <stdio.h>

main()
{
int i,n,voc,con;
char str[100];
printf("\nInserire una stringa composta da lettere dell'alfabeto e punteggiatura:\n");
scanf("%s",&str);
n=0;
i=0;
while (str[i] != '\0') {
n++;
i++;
}
voc=0;
con=0;
for(i=0;i<n;i++) {
if (96 < str[i] < 123 || 64 < str[i] < 91) {
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')
voc++;
else
con++;
}
}
printf("\nIl numero di vocali %d, quello delle consonanti %d\n",voc,con);
}

oregon
08-02-2009, 20:06
Il codice non e' leggibile ...

cristianc
08-02-2009, 20:06
ora l'ho sistemato

oregon
08-02-2009, 20:26
Nella scanf il nome della stringa e' gia' il puntatore che serve ...

scanf("%s", str);

cristianc
08-02-2009, 20:45
Originariamente inviato da oregon
Nella scanf il nome della stringa e' gia' il puntatore che serve ...

scanf("%s", str);
ok grazie

In esecuzione ho verificato questo bug:


Inserire una stringa composta da lettere dell'alfabeto e punteggiatura:
cane e gatto

Il numero di vocali 2, quello delle consonanti 2

Loading