nombre de fichiers où appartient un terme

nombre de fichiers où appartient un terme - C++ - Programmation

Marsh Posté le 31-07-2010 à 14:12:01    

Bonjour,  
j'ai un dossier de fichiers textes et je voulais les parcourir mot à mot pour savoir le nombre de fichiers où appartient chaque terme.  
le résultat de ce code est erroné, la faute est dans la fonction nbfiles, j'ai pas su le calculer,  
j'espère que vous pouvez m'aider à savoir comment le calculer.
 

Code :
  1. #include <dirent.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. #include <map>
  6. bool isValid(const std::string& path)
  7. {
  8.   return !path.empty() && path != "." && path != "..";
  9. }
  10. void fillMap(std::map<std::string, int>& map, const std::string& filename)
  11. {  std::ifstream entree(filename.c_str());
  12.   std::string s;
  13.   while (entree >> s)
  14. ++map[s];
  15. }
  16.   bool exists(const std::string& filename, const std::string& pattern)
  17. { std::ifstream entree(filename.c_str());
  18.   std::string s;
  19. while (entree >> s)
  20. if (s == pattern)
  21.   return true;
  22.   return false;
  23. }
  24. void nbfiles(const std::string& filename)
  25. {  std::map<std::string, int> map;
  26.   fillMap(map, filename);
  27.   int nbFile = 0;
  28.   typedef std::map<std::string, int>::const_iterator iter;
  29.   for (iter it = map.begin(); it != map.end(); ++it)
  30. if (exists(filename, it->first))
  31.   {++nbFile;
  32.    break;
  33.    }
  34.    for (iter it = map.begin(); it != map.end(); ++it)
  35.   std::cout << "Le nombre de fichier contenant le terme " << it->first << " est " << nbFile << std::endl<< std::endl;
  36.   }
  37. int main()
  38. { static const std::string folder = "in";
  39.   DIR* rep = opendir(folder.c_str());
  40.   if (rep)
  41.   { struct dirent* lecture;
  42. while ((lecture = readdir(rep)))
  43.  {
  44.   if (!isValid(lecture->d_name))
  45.    continue;
  46.    nbfiles(folder + "/" + lecture->d_name);
  47.    std::cout << std::endl;
  48.  }
  49. closedir(rep);
  50. }
  51.   system ("pause" );
  52.   return 0;
  53. }

Reply

Marsh Posté le 31-07-2010 à 14:12:01   

Reply

Marsh Posté le 31-07-2010 à 21:20:45    

http://www.siteduzero.com/forum-83 [...] terme.html
http://www.developpez.net/forums/d [...] ent-terme/
ben voyons...
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-08-2010 à 14:21:40    

Bonjour,
Il faut que tu fasses de cette variable "int nbFile = 0" une variable globale, en gros que tu l

Reply

Marsh Posté le 02-08-2010 à 14:37:21    

breizhbugs a écrit :

Bonjour,
Il faut que tu fasses de cette variable "int nbFile = 0" une variable globale, en gros que tu l


ache pas ta touche TAB

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed