Commit a29918962c5ebe68a233ebf37365f4336e64c3c4

Authored by Thorsieger
1 parent f5a2cf08

ajout dernier commentaires

Showing 2 changed files with 69 additions and 59 deletions   Show diff stats
1 1 #include "tree.h"
2 2  
3   -int main(int argc, char* argv[])
  3 +int main(int argc, char *argv[])
4 4 {
5 5 setlocale(LC_ALL, "");
  6 +
6 7 //Récupération du fichier contenant le dictionnaire
7 8 char fichier[100];
8   - if(argc==3) strcpy(fichier,argv[1]);
  9 + if (argc == 3) strcpy(fichier, argv[1]);
9 10  
10   - FILE* fp = NULL;
11   - if(argc != 3)wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n");
12   - do{
13   - if(argc != 3)wscanf(L"%s",fichier);
14   - fp = fopen(fichier,"r");
15   - if(fp == NULL)
  11 + FILE *fp = NULL;
  12 + if (argc != 3) wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n");
  13 + do
  14 + {
  15 + if (argc != 3) wscanf(L"%s", fichier);
  16 + fp = fopen(fichier, "r");
  17 + if (fp == NULL)
16 18 {
17   - if(argc==3){
18   - wprintf(L"Le fichier n'est pas accessible !\n");
19   - return 1;
20   - }
21   - else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
  19 + if (argc == 3)
  20 + {
  21 + wprintf(L"Le fichier n'est pas accessible !\n");
  22 + return 1;
  23 + }
  24 + else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
22 25 }
23   - }while(fp == NULL);
24   -
  26 + } while (fp == NULL);
  27 +
25 28 //Choix des séparateurs
26 29 wchar_t separateur[] = L",?;.:/!*+\\\"()=«»[]";
27 30  
28   - wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n",separateur);
  31 + wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n", separateur);
29 32 char changer_separateur = ' ';
30   - wscanf(L" %c",&changer_separateur);
31   - if(changer_separateur == 'Y' || changer_separateur == 'y')
  33 + wscanf(L" %c", &changer_separateur);
  34 + if (changer_separateur == 'Y' || changer_separateur == 'y')
32 35 {
33   - do{
  36 + do
  37 + {
34 38 wprintf(L"Entrez la nouvelle liste des séparateur :\n");
35   - wscanf(L"%ls",separateur);
36   - wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n",separateur);
37   - wscanf(L" %c",&changer_separateur);
38   - }while(changer_separateur!='Y' && changer_separateur!='y');
  39 + wscanf(L"%ls", separateur);
  40 + wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n", separateur);
  41 + wscanf(L" %c", &changer_separateur);
  42 + } while (changer_separateur != 'Y' && changer_separateur != 'y');
39 43 }
40 44  
41 45 //Chargement du dictionnaire
42 46 dico Dico;
43 47 init_dico(&Dico);
44   - load_dico(fp,&Dico,separateur);
  48 + load_dico(fp, &Dico, separateur);
45 49 fclose(fp);
46 50 wprintf(L"Chargement du dictionnaire effectué!\n\n");
47 51  
48 52 //Récupération du fichier contenant les mots à tester
49 53 char recommencer = ' ';
50   - do{
51   - FILE* fp = NULL;
52   - if(argc != 3)wprintf(L"Quel fichier voulez-vous tester ?\n");
53   - else strcpy(fichier,argv[2]);
54   - do{
55   - if(argc != 3)wscanf(L"%s",fichier);
56   - fp = fopen(fichier,"r");
57   - if(fp == NULL)
  54 + do
  55 + {
  56 + FILE *fp = NULL;
  57 + if (argc != 3) wprintf(L"Quel fichier voulez-vous tester ?\n");
  58 + else strcpy(fichier, argv[2]);
  59 + do
58 60 {
59   - if(argc==3){
60   - wprintf(L"Le fichier n'est pas accessible !\n");
61   - return 1;
62   - }
63   - else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
64   - }
65   - }while(fp == NULL);
  61 + if (argc != 3) wscanf(L"%s", fichier);
  62 + fp = fopen(fichier, "r");
  63 + if (fp == NULL)
  64 + {
  65 + if (argc == 3)
  66 + {
  67 + wprintf(L"Le fichier n'est pas accessible !\n");
  68 + return 1;
  69 + }
  70 + else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
  71 + }
  72 + } while (fp == NULL);
66 73  
67   - //Vérification des mots du fichier
68   - int result = find_erreur(Dico,fp,separateur);
69   - wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result);
70   - fclose(fp);
  74 + //Vérification des mots du fichier
  75 + int result = find_erreur(Dico, fp, separateur);
  76 + wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n", result);
  77 + fclose(fp);
  78 +
  79 + //Demande si volonté de recommencer
  80 + if (argc != 3){
  81 + wprintf(L"Voulez vous tester un autre fichier ?[Y]\n");
  82 + wscanf(L" %c", &recommencer);
  83 + }else recommencer = ' ';
71 84  
72   - //Demande si volonté de recommencer
73   - if(argc != 3)wprintf(L"Voulez vous tester un autre fichier ?[Y]\n");
74   - if(argc != 3)wscanf(L" %c",&recommencer);
75   - else recommencer = ' ';
76   - }while(recommencer == 'Y' || recommencer == 'y');
  85 + } while (recommencer == 'Y' || recommencer == 'y');
77 86  
78   - free_dico(Dico);//libérer la mémoire du dictionnaire
  87 + free_dico(Dico); //libérer la mémoire du dictionnaire
79 88  
80 89 wprintf(L"Fin du programme\n");
81 90  
... ...
... ... @@ -164,8 +164,9 @@ void free_dico(dico Dico)
164 164 //Recherche dans le dictionnaire d'un mot
165 165 int find_mot(dico Dico, wchar_t mot[])
166 166 {
167   - if (mot == NULL)return 0;
  167 + if (mot == NULL)return 0;//Pas de mot
168 168  
  169 + //Récupération de l'indice du dico correspondant à la première lettre de l'arbre
169 170 int fl = -1;
170 171 if (mot[0] >= 'a' && mot[0] <= 'z')
171 172 {
... ... @@ -181,7 +182,7 @@ int find_mot(dico Dico, wchar_t mot[])
181 182 break;
182 183 }
183 184 }
184   - if (fl == -1){
  185 + if (fl == -1){//Si la première lettre n'a pas été trouvé le mot n'existe pas dans le dico
185 186 wprintf(mot);
186 187 wprintf(L"\n");
187 188 return 1;
... ... @@ -189,9 +190,9 @@ int find_mot(dico Dico, wchar_t mot[])
189 190 }
190 191  
191 192 int taille = size(mot);
192   - if (taille == 1 && Dico.tab_ptr_tree[fl] != NULL)
  193 + if (taille == 1 && Dico.tab_ptr_tree[fl] != NULL)//Mot de 1 lettre et arbre existant
193 194 {
194   - if (Dico.tab_ptr_tree[fl]->fin == 0){
  195 + if (Dico.tab_ptr_tree[fl]->fin == 0){//la lettre n'est pas une lettre de terminaison
195 196 wprintf(mot);
196 197 wprintf(L"\n");
197 198 return 1;
... ... @@ -200,21 +201,21 @@ int find_mot(dico Dico, wchar_t mot[])
200 201 if (Dico.tab_ptr_tree[fl] == NULL)return 1; //faux
201 202  
202 203 struct node *ptr_node = Dico.tab_ptr_tree[fl];
203   - for (int i = 1; i < taille; i++)
  204 + for (int i = 1; i < taille; i++)//On teste toute les lettres du mot
204 205 {
205   - if (ptr_node->nbr_fils == 0){
  206 + if (ptr_node->nbr_fils == 0){//Le noeud actuel n'a pas de fils
206 207 wprintf(mot);
207 208 wprintf(L"\n");
208 209 return 1;
209 210 }
210   - for (int k = 0; k < (ptr_node->nbr_fils); k++)
  211 + for (int k = 0; k < (ptr_node->nbr_fils); k++)//Onteste tous les fils
211 212 {
212   - if (ptr_node->fils[k]->val == mot[i])
  213 + if (ptr_node->fils[k]->val == mot[i])//on trouve la lettre
213 214 {
214 215 ptr_node = ptr_node->fils[k];
215 216 break;
216 217 }
217   - else if (k + 1 == ptr_node->nbr_fils){
  218 + else if (k + 1 == ptr_node->nbr_fils){//on trouve pas
218 219 wprintf(mot);
219 220 wprintf(L"\n");
220 221 return 1;
... ... @@ -222,7 +223,7 @@ int find_mot(dico Dico, wchar_t mot[])
222 223 }
223 224 }
224 225  
225   - if (ptr_node->fin == 0){
  226 + if (ptr_node->fin == 0){//on est à la dernière lettre, on regarde si c'est une lettre terminaison
226 227 wprintf(mot);
227 228 wprintf(L"\n");
228 229 return 1;
... ...