Commit a29918962c5ebe68a233ebf37365f4336e64c3c4
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; | ... | ... |