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 #include "tree.h" 1 #include "tree.h"
2 2
3 -int main(int argc, char* argv[]) 3 +int main(int argc, char *argv[])
4 { 4 {
5 setlocale(LC_ALL, ""); 5 setlocale(LC_ALL, "");
  6 +
6 //Récupération du fichier contenant le dictionnaire 7 //Récupération du fichier contenant le dictionnaire
7 char fichier[100]; 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 //Choix des séparateurs 28 //Choix des séparateurs
26 wchar_t separateur[] = L",?;.:/!*+\\\"()=«»[]"; 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 char changer_separateur = ' '; 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 wprintf(L"Entrez la nouvelle liste des séparateur :\n"); 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 //Chargement du dictionnaire 45 //Chargement du dictionnaire
42 dico Dico; 46 dico Dico;
43 init_dico(&Dico); 47 init_dico(&Dico);
44 - load_dico(fp,&Dico,separateur); 48 + load_dico(fp, &Dico, separateur);
45 fclose(fp); 49 fclose(fp);
46 wprintf(L"Chargement du dictionnaire effectué!\n\n"); 50 wprintf(L"Chargement du dictionnaire effectué!\n\n");
47 51
48 //Récupération du fichier contenant les mots à tester 52 //Récupération du fichier contenant les mots à tester
49 char recommencer = ' '; 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 wprintf(L"Fin du programme\n"); 89 wprintf(L"Fin du programme\n");
81 90
@@ -164,8 +164,9 @@ void free_dico(dico Dico) @@ -164,8 +164,9 @@ void free_dico(dico Dico)
164 //Recherche dans le dictionnaire d'un mot 164 //Recherche dans le dictionnaire d'un mot
165 int find_mot(dico Dico, wchar_t mot[]) 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 int fl = -1; 170 int fl = -1;
170 if (mot[0] >= 'a' && mot[0] <= 'z') 171 if (mot[0] >= 'a' && mot[0] <= 'z')
171 { 172 {
@@ -181,7 +182,7 @@ int find_mot(dico Dico, wchar_t mot[]) @@ -181,7 +182,7 @@ int find_mot(dico Dico, wchar_t mot[])
181 break; 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 wprintf(mot); 186 wprintf(mot);
186 wprintf(L"\n"); 187 wprintf(L"\n");
187 return 1; 188 return 1;
@@ -189,9 +190,9 @@ int find_mot(dico Dico, wchar_t mot[]) @@ -189,9 +190,9 @@ int find_mot(dico Dico, wchar_t mot[])
189 } 190 }
190 191
191 int taille = size(mot); 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 wprintf(mot); 196 wprintf(mot);
196 wprintf(L"\n"); 197 wprintf(L"\n");
197 return 1; 198 return 1;
@@ -200,21 +201,21 @@ int find_mot(dico Dico, wchar_t mot[]) @@ -200,21 +201,21 @@ int find_mot(dico Dico, wchar_t mot[])
200 if (Dico.tab_ptr_tree[fl] == NULL)return 1; //faux 201 if (Dico.tab_ptr_tree[fl] == NULL)return 1; //faux
201 202
202 struct node *ptr_node = Dico.tab_ptr_tree[fl]; 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 wprintf(mot); 207 wprintf(mot);
207 wprintf(L"\n"); 208 wprintf(L"\n");
208 return 1; 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 ptr_node = ptr_node->fils[k]; 215 ptr_node = ptr_node->fils[k];
215 break; 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 wprintf(mot); 219 wprintf(mot);
219 wprintf(L"\n"); 220 wprintf(L"\n");
220 return 1; 221 return 1;
@@ -222,7 +223,7 @@ int find_mot(dico Dico, wchar_t mot[]) @@ -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 wprintf(mot); 227 wprintf(mot);
227 wprintf(L"\n"); 228 wprintf(L"\n");
228 return 1; 229 return 1;