PDA

Visualizza la versione completa : [C] Conteggio parole di N lettere


darksergio
25-02-2011, 17:57
ho scritto questo programmino che dovrebbe contarmi le parole di 3 lettere che riceve di input da tastiera, ma c'è qualcosa che non va, dopo l'inserimento stringa, entra in loop, penso dipenda dall'ultimo if....


#include <stdio.h>
#include <string.h>

int main()
{
char testo[100], separatori[]={' ','\n','\t','\0'};
int n_caratteri,n_parole,i, contatore=0;
printf("inserire testo: \n");
gets(testo);

for(i=0;i<100;i++)

{
while(testo[i]!='\0')
{
if(testo[i]!=' '|| testo[i]!='\n'|| testo[i]!='\t')
n_caratteri++;
else
n_parole++;
if(n_caratteri==3 && testo[i+1]==' ' || testo[i+1]=='\n' || testo[i+1]=='\t')
{
contatore=contatore+1;
n_caratteri=0;
}
}
}
printf("numero di parole con 3 lettere: %d",contatore);

return 0;
}

qualcuno saprebbe dirmi dove sbaglio???

grazie in anticipo, spero che stavolta il thread sia fatto bene...

Laikius91
26-02-2011, 11:50
Per ora non ho controllato se il programma fa quello che ti serve, ma entra in loop perchè in pratica il for esterno è inutile, in quanto quello conta è il while interno, che continua all'infinito non essendoci un incremento della i, ti conviene eliminare il for e fare una cosa del genere:



i = 0;

while(testo[i]!='\0')
{
if(testo[i]!=' '|| testo[i]!='\n'|| testo[i]!='\t')
n_caratteri++;
else
n_parole++;
if(n_caratteri==3 && testo[i+1]==' ' || testo[i+1]=='\n' || testo[i+1]=='\t')
{
contatore=contatore+1;
n_caratteri=0;
}

i++;
}

Loading