Rechercher : dans
Par :

Nombre de mots et phrases d'une chaine en C

Dernière réponse le 27 mar 2008 à 20:12:14 yeuxdelynx, le 27 mar 2008 à 11:51:53 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « nombre de mots et phrases d'une chaine en C » dans :
Compter les mots dans un document (OpenOffice.org ou Word) VoirIl est parfois utile de pouvoir compter le nombre de mots ou de caractères dans un document. Les deux principales suites bureautiques permettent de le faire très simplement : Avec Word Avec OpenOffice.org Avec Word Ouvrez votre document...
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Mots clés du C++ VoirMots clés du C++ Les mots clés communs au C et au C++ sont indiqués en caractères gras. ...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...

1

UaLShark, le 27 mar 2008 à 13:17:22
  • +1

Int nbMots = 0;
int nbPhrases = 0;
j= 0;

while(j<strlen(txt));
{
if(txt[j] == ' ') ++nbMots;
j++;
}

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

j= 0;

while(j<strlen(txt));
{
if(txt[j] == '.') ++nbPhrases;
j++;
}

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

ou bien dans une seule boucle
int nbMots = 0;
int nbPhrases = 0;
j= 0;

while(j<strlen(txt));
{
if(txt[j] == ' ') ++nbMots;
if(txt[j] == '.') ++nbPhrases;
j++;
}
printf("votre chaine de caractere contient %d mot(s)\n",nbMots);
printf("votre chaine de caractere contient %d phrase(s)\n",nbPhrases);

Répondre à UaLShark

2

yeuxdelynx, le 27 mar 2008 à 14:40:35
  • +1

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;
}

Répondre à yeuxdelynx

3

UaLShark, le 27 mar 2008 à 16:42:10
  • +1

Re yeuxdelynx
j'ai fait une petite gaffe toute à l'heure en t'envoyant le code
while(j<strlen(txt));<--- Erreur (C'est une boucle infinie)
{
if(txt[j] == ' ') ++nbMots;
j++;
}
aussi
while(j<strlen(txt)); <-- Erreur (Boucle infinie)
{
if(txt[j] == '.') ++nbPhrases;
j++;
}
faut juste enlever les ;
sinon tant mieux que ça marche pour toi :-)
mais juste pour savoir elle est ou l'erreur

Répondre à UaLShark

4

 yeuxdelynx, le 27 mar 2008 à 20:12:14
  • +2

Moi non plus j'avais pas fait attention au point virgule, maintenant ça marche très bien.
Merci beaucoup :-)

Répondre à yeuxdelynx