Nombre de mots et phrases d'une chaine en C

Résolu/Fermé
yeuxdelynx Messages postés 8 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 2 juin 2009 - 27 mars 2008 à 11:51
 no one - 9 déc. 2015 à 20:25
Bonjour,
Je suis supposée faire programme qui permet de déterminer le nombre de caractères, de mots et de phrases dans un texte saisie, j'ai fait le programme suivant ça ne marche que pour le nombre de caractère:

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char txt[5000];
int nbc,j,i;
printf("Entrez votre texte:\n");
gets(txt);


nbc=strlen(txt);

printf("votre chaine de caractere a une longueur de %d caracteres\n",nbc);



j= 0;

while(txt[j]== ' ');
{
j++;
}

printf("votre chaine de caractere contient %d mot(s)\n",j);

i= 0;

while(txt[i]== '.');
{
i++;
}

printf("votre chaine de caractere contient %d phrase(s)\n",i);
return 0;
}

Si quelqu'un peut me dire où est l'erreur, sachant que j'avais essayé la bouble while pour calculer le nombre de caractère avec la condition txt[k]=='\0' et ça a marché.
Merci d'avance.

4 réponses

yeuxdelynx Messages postés 8 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 2 juin 2009 1
27 mars 2008 à 14:40
Merci pour ton aide, mais je pense qu'il y a un problème au niveau de la boucle while parce lors de l'exécution ça se bloque mais j ai trouvé une autre méthode utilisant une boucle for et la condition avec if:

#include <stdio.h>
#include<stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char txt[5000];
int nbc,j,i,k;
int nbmots=0
int nbphrases=0;
printf("Entrez votre texte:\n");
gets(txt);


nbc=strlen(txt);

printf("votre chaine de caractere a une longueur de %d caracteres\n",nbc);


j=0;

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

if ((txt[i] == ' ')||(txt[i] == '.')||(txt[i] == ',')||(txt[i] == ';')||(txt[i] == '!')||(txt[i] == '?')||(txt[i] == '-')||(txt[i] == '_'))
nbmots++;
printf("Le nombre de mots est de : %d\n",nbmots);



for(k=0;k<nbc;k++)
if((txt[k]=='.')||(txt[k] == '!')||(txt[k] == '?'))
nbPhrases++;


printf("votre chaine de caractere contient %d phrase(s)\n",nbPhrases);
return 0;
}
0
desole ! ms si l'utilisateur a tapé plusieur esace ! le programme va compte une space comme une mot ! est plus que sa , les code qui vous ecrivez sur les nombres de mot est fausse ..
0