utilitaires.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include <fstream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include "utilitaires.h"
  5. #include "type_def.h"
  6. using namespace std;
  7. // ajouter srand(TIME(NULL)) dans le main
  8. Personne genererPersonne(string* listNom, string* listPrenom, int nbNom, int nbPrenom)
  9. {
  10. char sexe[1], annee[2], moisNaiss[2], depart[2], commune[3], etatCiv[3];
  11. sprintf(sexe, "%d", rand()%2 + 1);
  12. sprintf(annee,"%02d",rand()%99+1);
  13. sprintf(moisNaiss,"%02d",rand()%12+1);
  14. sprintf(depart,"%02d",rand()%99+1);
  15. sprintf(commune,"%03d",rand()%999+1);
  16. sprintf(etatCiv,"%03d",rand()%999+1);
  17. string num = string(sexe)+string(annee)+string(moisNaiss)+string(depart)+string(commune)+string(etatCiv);
  18. Personne palea;
  19. palea.nom = listNom[rand()%nbNom];
  20. palea.prenom = listPrenom[rand()%nbPrenom];
  21. palea.num = num;
  22. return palea;
  23. }
  24. int initTabNomPrenom(vectNom tab, string fichier)
  25. {
  26. // Ouvrir un flux
  27. ifstream monFlux(fichier.c_str());
  28. // Données
  29. int nb;
  30. monFlux >> nb;
  31. for (int k = 0; k < nb; ++k)
  32. {
  33. monFlux >> tab[k];
  34. }
  35. // Fin
  36. return nb;
  37. }
  38. void genererRepertoire(vectPersonne tab, std::string* listNom, std::string* listPrenom, int nbNom, int nbPrenom)
  39. {
  40. // Générer
  41. for (int k = 0; k < 10000; ++k)
  42. {
  43. tab[k] = genererPersonne(listNom, listPrenom, nbNom, nbPrenom);
  44. }
  45. // Ecrire
  46. ofstream monFlux("repertoire.txt");
  47. for (int k = 0; k < 10000; ++k)
  48. {
  49. monFlux << tab[k].nom << ' ' << tab[k].prenom << ' ' << tab[k].num << endl;
  50. }
  51. }
  52. bool egalitePersonne(Personne a, Personne b)
  53. {
  54. return (a.nom == b.nom) && (a.prenom == b.prenom) && (a.num == b.num);
  55. }
  56. bool comparerPersonne(Personne a, Personne b)
  57. {
  58. // Cas nom différent
  59. if (a.nom != b.nom)
  60. {
  61. return a.nom < b.nom;
  62. }
  63. // Cas nom identique
  64. else
  65. {
  66. // Cas prenm different
  67. if (a.prenom != b.prenom)
  68. {
  69. return a.prenom < b.prenom;
  70. }
  71. // Cas prenom identique
  72. else
  73. {
  74. // Numero de securite sociale forcement different
  75. return a.num < b.num;
  76. }
  77. }
  78. }