Bonjour,
Je suis confronté à un problème d'algorithmie, je voudrais m'entrainer à faire un programme qui compte les mots d'une phrase, sachant qu'un mot est séparé par un espace ou un '_'. Ce que je compte faire c'est regarder si la case de l'indice sur lequel ma boucle est vaut un espace ou un '_' et si la case de l'indice suivant est différente d'un espace ou d'un '_' (donc est une lettre ou un chiffre) alors cela est compté pour un mot.
J'ai fais le code suivant qui ne renvoi aucune erreur mais m'affiche :Mon programme compte bien car la phrase revient autant de fois qu'il y a des mots !Nombre de mots : 0 Entrez la phrase à tester
Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include <string> #include <cctype> #include <iostream> using namespace std; namespace { unsigned CompterNombreMots(string chaine) { unsigned NombreDeMots = 0; for(unsigned i = 0; i < chaine.size() - 1; i++) { if (((chaine[i] == ' ') || (chaine[i] == '_')) && ((chaine[i+1] != ' ') || (chaine[i+1] != '_'))) { NombreDeMots++; } } return NombreDeMots; } } int main () { for (;;) { cout << "Entrez la phrase à tester : " << endl; string chaine; cin >> chaine; if (chaine == "") break; cout << "Nombre de mots : " << CompterNombreMots(chaine); } return 0; } // main()
Partager