cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015
-
2 juil. 2010 à 12:37
cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015
-
2 juil. 2010 à 14:14
bonjour,
ce programme permet de déterminer le nombre d'occurence de tous les termes dans un texte, j'ai créé une liste contenant les termes du texte, et puis la fonction compare parcourt le texte en parallèle avec la liste pour compter le nombre d'occurence de chaque mot du texte.
#include
#include <fstream>
#include <string>
using std::ifstream;
using std::string;
struct Page
{
string val;
Page* suivant;
};
Page* creerliste()
{
ifstream entree ("in.txt");
string i;
Page* premier;
Page* precedent;
Page* nouveau;
premier = new Page;
entree >> premier->val;
precedent = premier;
while (entree >> i)
{
nouveau = new Page;
precedent->suivant = nouveau;
precedent = nouveau;
nouveau->val = i;
}
precedent->suivant = 0;
return premier;
}
void compare(Page* debut)
{
int i = 0;
ifstream ifs("in.txt") ;
string s;
Page* head = debut;
while (ifs >> s)
{
debut = head;
while (debut != 0)
{
if (s == debut->val)
i=i+1;
debut = debut->suivant;
}
std::cout << "le nombre d'occurence du mot " << s << " est " << i << std::endl;
i=0;
}
}
int main()
{
Page* premier = creerliste();
compare(premier);
system ("pause");
return 0;
}
l'entrée est:
Cest vendredi le 2 juillet 2010
Vendredi 2 7 2010
le résultat de ce code est:
le nombre d'occurence du mot Cest est 1
le nombre d'occurence du mot vendredi est 1
le nombre d'occurence du mot le est 1
le nombre d'occurence du mot 2 est 2
le nombre d'occurence du mot juillet est 1
le nombre d'occurence du mot 2010 est 2
le nombre d'occurence du mot Vendredi est 1
le nombre d'occurence du mot 2 est 2
le nombre d'occurence du mot 7 est 1
le nombre d'occurence du mot 2010 est 2
j'ai alors un problème dans l'affichage comme par exemple le nombre d'occurence du mot 2 est 2 se répète, une redondance
pourrais je avoir vore aide pour résoudre ce problème.
et merci.
A voir également:
Nombre d'occurence algorithme
Nombre d'occurence dans un tableau en c - Meilleures réponses
Compter le nombre d'occurence dans un tableau en c - Meilleures réponses
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 2 juil. 2010 à 12:52
Utilise une std::map !
Cette collection te permet d'associer deux type ensembles. Par exemple un std::string avec un entier.
C'est comme si on créait des colonnes, et que l'on associait un mot avec un entier.
Ex: map["pouet"] = 3;
Si on fait std::cout << map["pouet"];, on aura donc 3.
Si map["pouet"] n'existe pas, il est crée automatiquement.
Donc lorsque l'on fait ++map["pouet"], "pouet" sera crée et l'on aura 1 d'associé avec.
Juste en faisant:
while (ifs >> s)
++map[s];
Je peux associer tous les mots avec leur nombre d'occurence.
Ex:
#include
#include <fstream>
#include <map>
int main()
{
std::ifstream ifs("in.txt") ;
std::string s;
std::map<std::string, int> map;
while (ifs >> s)
++map[s];
typedef std::map<std::string, int>::const_iterator iter;
for (iter it = map.begin(); it != map.end(); ++it)
std::cout << "le nombre d'occurence du mot " << it->first << " est " << it->second << std::endl;
return 0;
}
cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015 2 juil. 2010 à 14:14
c'est vraiment extra-ordinaire ce map,je ne l'ai jamais utilisé,
je vous remercie infiniment, tout d'abord pour le code et surtout pour l'explication de ce code et de l'utilité du map.