Programme c++ qui compte le nombre d'occurence des termes d'un fichier texte

Signaler
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
je veux savoir le nombre d'occurence de tous les termes du fichier "in"; j'ai écrit le programme ci-dessous:

int main(int argc, char* argv[])
{ ifstream doc ("in.txt");
string m,m1;
int i=0;
while (doc >> m)
{ while (doc >> m1)
{if (m == m1)
i=i+1;
}
cout << "le nombre d'occurence du mot " << m << " est " << i << endl;
i=0;
}

system("pause");
return 0;
}
le fichier "in" comporte: ala ala ala ala dit a papa qque chose papa dit a ala que chose
l'exécution de ce code m'affiche comme résultat: le nombre d'occurence du mot ala est 0
alors qu'il doit m'afficher: le nombre d'occurence du mot ala est 5
le nombre d'occurence du mot dit est 2
le nombre d'occurence du mot a est 2
le nombre d'occurence du mot papa est 2
le nombre d'occurence du mot qque est 2
le nombre d'occurence du mot chose est 2
est ce que quelqu'un peut m'aider svp à connaître mon erreur.
A voir également:

2 réponses

Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
C'est tout à fait normal. Tu parcours ton fichier de multiples fois pour rien (une seule fois serait nécessaire) et en plus, pour chaque mot tu ne repars pas du début, mais du mot ou tu es actuellement.
Donc si tu as: "b a b c d", et que tu es sur "b", tu ne verras rien car après "b", il y a "c d", et tu ne cherches que là dessus.

L'astuce est d'utiliser une std::map<std::string, int> et de compter le nombre d'occurence de chaque chaine grâce à une association clé/valeur. Un seul parcours suffira alors.
Je t'invite à regarder la documentation de std::map sur internet, tu verras que c'est très pratique.

PS: Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

Merci bien pour votre aide.
j'ai compris pourquoi éviter les using namespace std, mais pour l'utilisation des map,je suis entrain de voir des documentations sur internet, elle m'a paru un peu difficile.