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