Commit ffa95c23f45b04b01e90a92e603d3a06a129187b
1 parent
0e62ceb1
Version finale sans commentaire avec correcteur orthographique opérationnel
Showing
5 changed files
with
254 additions
and
92 deletions
Show diff stats
doc.txt
No preview for this file type
@@ -11,6 +11,7 @@ int main(int argc, char *argv[]) | @@ -11,6 +11,7 @@ int main(int argc, char *argv[]) | ||
11 | init_pgrm(); | 11 | init_pgrm(); |
12 | Node tree = NULL; | 12 | Node tree = NULL; |
13 | int error = 0; | 13 | int error = 0; |
14 | + int correct = 0; | ||
14 | FILE* fp_lib; | 15 | FILE* fp_lib; |
15 | FILE* fp_txt; | 16 | FILE* fp_txt; |
16 | 17 | ||
@@ -21,7 +22,7 @@ int main(int argc, char *argv[]) | @@ -21,7 +22,7 @@ int main(int argc, char *argv[]) | ||
21 | } | 22 | } |
22 | 23 | ||
23 | fp_lib = fopen(argv[argc-2], "r"); | 24 | fp_lib = fopen(argv[argc-2], "r"); |
24 | - fp_txt = fopen(argv[argc-1], "r"); | 25 | + fp_txt = fopen(argv[argc-1], "r+"); |
25 | 26 | ||
26 | if(fp_lib==NULL || fp_txt==NULL) | 27 | if(fp_lib==NULL || fp_txt==NULL) |
27 | { | 28 | { |
@@ -31,17 +32,18 @@ int main(int argc, char *argv[]) | @@ -31,17 +32,18 @@ int main(int argc, char *argv[]) | ||
31 | 32 | ||
32 | init_tree(&tree); | 33 | init_tree(&tree); |
33 | read_lib(fp_lib, &tree); | 34 | read_lib(fp_lib, &tree); |
34 | - read_txt(fp_txt, &tree, &error, fp_txt); | 35 | + read_txt(fp_txt, &tree, &error, &correct); |
35 | 36 | ||
36 | - // printf("%p\n", tree); | ||
37 | - | ||
38 | - //print_first(tree); | ||
39 | - //printf("\n"); | ||
40 | - //print_tree(tree, 0); | 37 | + // Si vous souhaitez imprimer l'arbre indexé complet : |
38 | + //char word[MAX] = ""; | ||
39 | + //print_tree(tree, 0, word); | ||
41 | 40 | ||
42 | if(error<2) printf("Dans le texte %s, %d mot n'est pas dans le dictionnaire %s.\n", argv[argc-1], error, argv[argc-2]); | 41 | if(error<2) printf("Dans le texte %s, %d mot n'est pas dans le dictionnaire %s.\n", argv[argc-1], error, argv[argc-2]); |
43 | else printf("Dans le texte %s, %d mots ne sont pas dans le dictionnaire %s.\n", argv[argc-1], error, argv[argc-2]); | 42 | else printf("Dans le texte %s, %d mots ne sont pas dans le dictionnaire %s.\n", argv[argc-1], error, argv[argc-2]); |
44 | 43 | ||
44 | + if(correct<2) printf("%d a été corrigé.\n", correct); | ||
45 | + else printf("%d ont été corrigés.\n", correct); | ||
46 | + | ||
45 | free_tree(&tree); | 47 | free_tree(&tree); |
46 | fclose(fp_lib); | 48 | fclose(fp_lib); |
47 | fclose(fp_txt); | 49 | fclose(fp_txt); |
@@ -27,7 +27,7 @@ void init_tree(Node* Tree) | @@ -27,7 +27,7 @@ void init_tree(Node* Tree) | ||
27 | if(is_empty_tree(*Tree)) | 27 | if(is_empty_tree(*Tree)) |
28 | { | 28 | { |
29 | *Tree = malloc(sizeof(node)); | 29 | *Tree = malloc(sizeof(node)); |
30 | - (*Tree)->letter = '?'; // caractère choisi arbitrairement | 30 | + (*Tree)->letter = 7; // |
31 | (* Tree)->endWord = false; | 31 | (* Tree)->endWord = false; |
32 | for(int i=0; i<NB_CARAC; i++) | 32 | for(int i=0; i<NB_CARAC; i++) |
33 | (*Tree)->next[i] = NULL; // initialisation du tableau 'next' Ã un tableau de pointeurs NULL | 33 | (*Tree)->next[i] = NULL; // initialisation du tableau 'next' Ã un tableau de pointeurs NULL |
@@ -71,9 +71,10 @@ void add_in_tree(Node Tree, char word[]) | @@ -71,9 +71,10 @@ void add_in_tree(Node Tree, char word[]) | ||
71 | { | 71 | { |
72 | new->next[i]=NULL; | 72 | new->next[i]=NULL; |
73 | } | 73 | } |
74 | + new->endWord = false; | ||
74 | Tree2->next[ind] = new; // on fait pointé le tableau du caractère précédent vers cette cellule (vers ce caractère) | 75 | Tree2->next[ind] = new; // on fait pointé le tableau du caractère précédent vers cette cellule (vers ce caractère) |
75 | - /*if(!(Tree2->endWord)) // si le caractère n'est pas un caractère de fin, on le met à 'false' -> UTILITE ? | ||
76 | - Tree2->endWord = false;*/ | 76 | + if(!(Tree2->endWord)) // si le caractère n'est pas un caractère de fin, on le met à 'false' -> UTILITE ? |
77 | + Tree2->endWord = false; | ||
77 | Tree2=Tree2->next[ind]; // on se place au niveau du caractère suivant dans l'arbre indexé | 78 | Tree2=Tree2->next[ind]; // on se place au niveau du caractère suivant dans l'arbre indexé |
78 | /*printf("%c %d\t", letter, ind); | 79 | /*printf("%c %d\t", letter, ind); |
79 | printf("okB %d\n", j);*/ | 80 | printf("okB %d\n", j);*/ |
@@ -102,7 +103,7 @@ char max_index(char word[]) | @@ -102,7 +103,7 @@ char max_index(char word[]) | ||
102 | return index; | 103 | return index; |
103 | } | 104 | } |
104 | 105 | ||
105 | -void scan_word(Node Tree, char word[], int* error, FILE* fp_txt) // si un mot démarre juste après un caractère de fin, la fonction ne lit pas les mots séparément | 106 | +void scan_word(Node Tree, char word[], int* error, FILE* fp_txt, int* correct) // si un mot démarre juste après un caractère de fin, la fonction ne lit pas les mots séparément |
106 | { | 107 | { |
107 | bool endWord = false; | 108 | bool endWord = false; |
108 | bool stop = false; | 109 | bool stop = false; |
@@ -124,7 +125,7 @@ void scan_word(Node Tree, char word[], int* error, FILE* fp_txt) // si un mot dà | @@ -124,7 +125,7 @@ void scan_word(Node Tree, char word[], int* error, FILE* fp_txt) // si un mot dà | ||
124 | } | 125 | } |
125 | else | 126 | else |
126 | { | 127 | { |
127 | - add_error(error, word, ind, Tree, fp_txt); | 128 | + add_error(error, word, ind, Tree2, fp_txt, correct); |
128 | //printf("%d\n", ind); | 129 | //printf("%d\n", ind); |
129 | ind = max_index(word); | 130 | ind = max_index(word); |
130 | //printf("%d\n", ind); | 131 | //printf("%d\n", ind); |
@@ -134,28 +135,134 @@ void scan_word(Node Tree, char word[], int* error, FILE* fp_txt) // si un mot dà | @@ -134,28 +135,134 @@ void scan_word(Node Tree, char word[], int* error, FILE* fp_txt) // si un mot dà | ||
134 | } | 135 | } |
135 | if(!endWord && !stop) | 136 | if(!endWord && !stop) |
136 | { | 137 | { |
137 | - add_error(error, word, ind, Tree, fp_txt); | 138 | + add_error(error, word, ind, Tree2, fp_txt, correct); |
138 | } | 139 | } |
139 | } | 140 | } |
140 | 141 | ||
141 | -void add_error(int* error, char word[], int index, Node Tree, FILE* fp_txt) | 142 | +void add_error(int* error, char word[], int index, Node Tree, FILE* fp_txt, int* correct) |
142 | { | 143 | { |
143 | (*error)++; | 144 | (*error)++; |
144 | if(index==0) | 145 | if(index==0) |
145 | { | 146 | { |
146 | - printf("Le mot %s ne correspond à aucun mot du dictionnaire.\n\n", word); | 147 | + printf("Le mot %s ne correspond à aucun mot du dictionnaire.\n", word); |
147 | return; | 148 | return; |
148 | } | 149 | } |
149 | else if(index<strlen(word)) | 150 | else if(index<strlen(word)) |
150 | - printf("Il y a une erreur dans le mot '%s', au caractère %c d'incide %d.\n\n", word, word[index], index); | 151 | + printf("Il y a une erreur dans le mot '%s', au caractère %c d'incide %d.\n", word, word[index], index); |
151 | else | 152 | else |
152 | - printf("Il manque au moins une lettre au mot '%s'.\n\n", word); | ||
153 | - make_correction(word, index, Tree, fp_txt); | 153 | + printf("Il manque au moins une lettre au mot '%s'.\n", word); |
154 | + make_correction(word, index, Tree, fp_txt, correct); | ||
154 | } | 155 | } |
155 | 156 | ||
156 | -void make_correction(char word[], int index, Node Tree, FILE* fp_txt) | 157 | +void make_correction(char word[], int index, Node Tree, FILE* fp_txt, int* correct) // gestion des caractères de fin |
157 | { | 158 | { |
158 | - return; | 159 | + correction liste = NULL; |
160 | + init_correction(&liste); | ||
161 | + char end; | ||
162 | + bool testEnd; | ||
163 | + testEnd = detect_end_caract(&end, word); | ||
164 | + int longueur = strlen(word); | ||
165 | + Node Tree2 = Tree; | ||
166 | + word[index-1]='\0'; | ||
167 | + printf("\n"); | ||
168 | + char words[MAX] = ""; | ||
169 | + make_tree_correct(Tree2, 0, words, word, liste); | ||
170 | + choice_word(liste, fp_txt, end, longueur, correct, testEnd); | ||
171 | + free(liste); // VALGRIND ??? | ||
172 | +} | ||
173 | + | ||
174 | +bool detect_end_caract(char* end, char word[]) | ||
175 | +{ | ||
176 | + if(is_end_caract(word[strlen(word)-1])) | ||
177 | + { | ||
178 | + *end = word[strlen(word)-1]; | ||
179 | + return true; | ||
180 | + } | ||
181 | + return false; | ||
182 | +} | ||
183 | + | ||
184 | +void choice_word(correction liste, FILE* fp_txt, char end, int longueur, int* correct, bool testEnd) | ||
185 | +{ | ||
186 | + int choix; | ||
187 | + printf("Voici les mots possibles pour corriger ce mot :\n"); | ||
188 | + for(int i=0; i<liste->dernier+1; i++) | ||
189 | + printf("%d. %s\n", i+1, liste->mots[i]); | ||
190 | + printf("\n"); | ||
191 | + choix = -1; | ||
192 | + printf("Quel mot voulez-vous sélectionner ? (Entrez %d pour ne pas corriger le mot)\n", (liste->dernier)+2); | ||
193 | + while(choix<1 || choix>liste->dernier+2) | ||
194 | + { | ||
195 | + scanf("%d", &choix); | ||
196 | + } | ||
197 | + if(choix==(liste->dernier)+2) | ||
198 | + { | ||
199 | + printf("\n"); | ||
200 | + return; | ||
201 | + } | ||
202 | + (*correct)++; | ||
203 | + char word[MAX]; | ||
204 | + strcpy(word, liste->mots[choix-1]); | ||
205 | + printf("Le mot %s a été sélectionné.\n\n", word); | ||
206 | + if(testEnd) add_caract(word, end); | ||
207 | + correct_word(word, fp_txt, longueur); | ||
208 | +} | ||
209 | + | ||
210 | +void correct_word(char word[], FILE* fp_txt, int longueur) | ||
211 | +{ | ||
212 | + FILE* fp_tamp; | ||
213 | + fp_tamp = fopen("tampon.txt", "w+"); | ||
214 | + if(fp_tamp==NULL) | ||
215 | + { | ||
216 | + printf("Erreur lors de l'ouverture du fichier tampon.\n"); | ||
217 | + return; | ||
218 | + } | ||
219 | + int position = ftell(fp_txt)-longueur; | ||
220 | + rewind(fp_txt); | ||
221 | + char tempo; | ||
222 | + while(ftell(fp_tamp)<position) | ||
223 | + { | ||
224 | + tempo = fgetc(fp_txt); | ||
225 | + if(tempo==EOF) break; | ||
226 | + if(tempo=='\n'); | ||
227 | + fputc(tempo, fp_tamp); | ||
228 | + } | ||
229 | + fprintf(fp_tamp, "%s", word); | ||
230 | + long newPosition = ftell(fp_tamp); | ||
231 | + fseek(fp_txt, ftell(fp_txt)+longueur, SEEK_SET); | ||
232 | + while(1) | ||
233 | + { | ||
234 | + tempo = fgetc(fp_txt); | ||
235 | + if(tempo==EOF) break; | ||
236 | + if(tempo=='\n'); | ||
237 | + fputc(tempo, fp_tamp); | ||
238 | + } | ||
239 | + rewind(fp_txt); | ||
240 | + rewind(fp_tamp); | ||
241 | + char temp[MAX_READ]; | ||
242 | + while(1) | ||
243 | + { | ||
244 | + if(fgets(temp, MAX_READ, fp_tamp)==NULL) | ||
245 | + break; | ||
246 | + fputs(temp, fp_txt); | ||
247 | + } | ||
248 | + fseek(fp_txt, newPosition, SEEK_SET); | ||
249 | + fclose(fp_tamp); | ||
250 | + remove("tampon.txt"); | ||
251 | +} | ||
252 | + | ||
253 | +void init_correction(correction* liste) | ||
254 | +{ | ||
255 | + if((*liste)!=NULL) | ||
256 | + { | ||
257 | + printf("Déjà initialisé.\n"); | ||
258 | + return; | ||
259 | + } | ||
260 | + *liste = malloc(sizeof(struct liste)); | ||
261 | + (*liste)->dernier = -1; | ||
262 | + for(int i=0; i<NB_MOT_CORRECTION; i++) | ||
263 | + { | ||
264 | + strcpy((*liste)->mots[i], ""); | ||
265 | + } | ||
159 | } | 266 | } |
160 | 267 | ||
161 | void init_pgrm(void) | 268 | void init_pgrm(void) |
@@ -174,7 +281,7 @@ bool no_accent(char word[]) | @@ -174,7 +281,7 @@ bool no_accent(char word[]) | ||
174 | return true; | 281 | return true; |
175 | } | 282 | } |
176 | 283 | ||
177 | -void read_txt(FILE* fp, Node* Tree, int* error, FILE* fp_txt) | 284 | +void read_txt(FILE* fp, Node* Tree, int* error, int* correct) |
178 | { | 285 | { |
179 | char word[MAX]; | 286 | char word[MAX]; |
180 | while(1) | 287 | while(1) |
@@ -182,7 +289,7 @@ void read_txt(FILE* fp, Node* Tree, int* error, FILE* fp_txt) | @@ -182,7 +289,7 @@ void read_txt(FILE* fp, Node* Tree, int* error, FILE* fp_txt) | ||
182 | if(fscanf(fp, "%s", word)!=1) | 289 | if(fscanf(fp, "%s", word)!=1) |
183 | break; | 290 | break; |
184 | if(no_accent(word)) // !!! MOTS AVEC ACCENTS NON PRIS EN COMPTE | 291 | if(no_accent(word)) // !!! MOTS AVEC ACCENTS NON PRIS EN COMPTE |
185 | - scan_word(*Tree, word, error, fp_txt); | 292 | + scan_word(*Tree, word, error, fp, correct); |
186 | } | 293 | } |
187 | if(feof(fp)) printf("Fin de la lecture du fichier à scanner.\n\n"); | 294 | if(feof(fp)) printf("Fin de la lecture du fichier à scanner.\n\n"); |
188 | if(ferror(fp)) printf("Erreur lors de la lecture du fichier à scanner.\n\n"); | 295 | if(ferror(fp)) printf("Erreur lors de la lecture du fichier à scanner.\n\n"); |
@@ -204,54 +311,83 @@ void read_lib(FILE* fp, Node* Tree) | @@ -204,54 +311,83 @@ void read_lib(FILE* fp, Node* Tree) | ||
204 | if(ferror(fp)) printf("Erreur lors de la lecture de la bibliothèque.\n\n"); | 311 | if(ferror(fp)) printf("Erreur lors de la lecture de la bibliothèque.\n\n"); |
205 | } | 312 | } |
206 | 313 | ||
314 | +void print_tree(Node Tree, int index, char word[]) | ||
315 | +{ | ||
316 | + if(is_empty_tree(Tree)) | ||
317 | + return; | ||
318 | + add_caract(word, Tree->letter); | ||
319 | + if(is_leaf(Tree)) | ||
320 | + { | ||
321 | + printf("%s\n", word); | ||
322 | + supp_caract(word); | ||
323 | + return; | ||
324 | + } | ||
325 | + if(Tree->endWord) | ||
326 | + printf("%s\n", word); | ||
327 | + while(index < NB_CARAC) | ||
328 | + { | ||
329 | + if(!is_empty_tree(Tree->next[index])) | ||
330 | + { | ||
331 | + print_tree(Tree->next[index], 0, word); | ||
332 | + } | ||
333 | + index++; | ||
334 | + } | ||
335 | + supp_caract(word); | ||
336 | + return; | ||
337 | +} | ||
207 | 338 | ||
208 | -void print_tree(Node Tree, int index) | 339 | +void make_tree_correct(Node Tree, int index, char word[], char start[], correction liste) |
209 | { | 340 | { |
210 | - if(is_empty_tree(Tree)) | ||
211 | - return; | ||
212 | - Node cpTree = NULL; | ||
213 | - cpTree = Tree; | ||
214 | - if(cpTree->next[index]==NULL && index<26) | ||
215 | - { | ||
216 | - print_tree(cpTree, index+1); | ||
217 | - } | ||
218 | - else if(index == 26) | ||
219 | - { | ||
220 | - return; | ||
221 | - } | ||
222 | - else | ||
223 | - { | ||
224 | - printf("%c\n", (cpTree->next[index])->letter); | ||
225 | - if((cpTree->next[index])->endWord) | ||
226 | - { | ||
227 | - printf("fin\n"); | ||
228 | - //print_tree(cpTree, 0); | ||
229 | - return; | ||
230 | - } | ||
231 | - print_tree(cpTree->next[index], 0); | ||
232 | - } | 341 | + if(is_empty_tree(Tree)) |
342 | + return; | ||
343 | + add_caract(word, Tree->letter); | ||
344 | + if(is_leaf(Tree)) | ||
345 | + { | ||
346 | + //printf("%s%s\n", start, word); | ||
347 | + add_in_liste(liste, start, word); | ||
348 | + supp_caract(word); | ||
349 | + return; | ||
350 | + } | ||
351 | + if(Tree->endWord) | ||
352 | + { | ||
353 | + //printf("%s%s\n", start, word); | ||
354 | + add_in_liste(liste, start, word); | ||
355 | + } | ||
356 | + while(index < NB_CARAC) | ||
357 | + { | ||
358 | + if(!is_empty_tree(Tree->next[index])) | ||
359 | + { | ||
360 | + make_tree_correct(Tree->next[index], 0, word, start, liste); | ||
361 | + } | ||
362 | + index++; | ||
363 | + } | ||
364 | + supp_caract(word); | ||
365 | + return; | ||
233 | } | 366 | } |
234 | 367 | ||
235 | -int find_index(Node tree) | 368 | +void add_in_liste(correction liste, char start[], char word[]) |
236 | { | 369 | { |
237 | - Node cpTree = tree; | ||
238 | - int index = 0; | ||
239 | - while(cpTree->next[index]==NULL && index < NB_CARAC) | ||
240 | - index++; | ||
241 | - return index; | 370 | + char temp[MAX]; |
371 | + strcpy(temp, start); | ||
372 | + strcat(temp, word); | ||
373 | + if(liste->dernier<NB_MOT_CORRECTION-1) | ||
374 | + { | ||
375 | + (liste->dernier)++; | ||
376 | + strcpy(liste->mots[liste->dernier], temp); | ||
377 | + } | ||
242 | } | 378 | } |
243 | 379 | ||
244 | -void print_first(Node Tree) | 380 | +void add_caract(char word[], char caract) |
245 | { | 381 | { |
246 | - Node cpTree = Tree; | ||
247 | - int index = 0; | ||
248 | - while(!is_leaf(cpTree) || !(cpTree->endWord)) | ||
249 | - { | ||
250 | - index = find_index(cpTree); | ||
251 | - printf("%c\n", (cpTree->next[index])->letter); | ||
252 | - if(cpTree->next[index]->endWord) printf("fin\n"); | ||
253 | - cpTree=cpTree->next[index]; | ||
254 | - } | 382 | + char str[2]; |
383 | + str[0] = caract; | ||
384 | + str[1] = '\0'; | ||
385 | + strcat(word, str); | ||
386 | +} | ||
387 | + | ||
388 | +void supp_caract(char word[]) | ||
389 | +{ | ||
390 | + word[strlen(word)-1]='\0'; | ||
255 | } | 391 | } |
256 | 392 | ||
257 | void free_tree(Node* Tree) | 393 | void free_tree(Node* Tree) |
@@ -11,6 +11,8 @@ | @@ -11,6 +11,8 @@ | ||
11 | #include <string.h> | 11 | #include <string.h> |
12 | #define MAX 30 // taille maximale d'une chaîne lue dans un fichier | 12 | #define MAX 30 // taille maximale d'une chaîne lue dans un fichier |
13 | #define NB_CARAC 27 // nombre de caractères différents pouvant être identifiés -> 89 avec accentués | 13 | #define NB_CARAC 27 // nombre de caractères différents pouvant être identifiés -> 89 avec accentués |
14 | +#define NB_MOT_CORRECTION 15 // nombre de mots pour la correction | ||
15 | +#define MAX_READ 1000 | ||
14 | 16 | ||
15 | // Déclaration de la structure 'trie' ou 'arbre indexé', ainsi que des pointeurs associés | 17 | // Déclaration de la structure 'trie' ou 'arbre indexé', ainsi que des pointeurs associés |
16 | typedef struct node* Node; | 18 | typedef struct node* Node; |
@@ -21,57 +23,82 @@ typedef struct node { | @@ -21,57 +23,82 @@ typedef struct node { | ||
21 | bool endWord; | 23 | bool endWord; |
22 | }node; | 24 | }node; |
23 | 25 | ||
26 | +// Déclaration de la structure contenant les mots possible pour la correction | ||
27 | +typedef struct liste* correction; | ||
28 | + | ||
29 | +typedef struct liste { | ||
30 | + char mots[NB_MOT_CORRECTION][MAX]; | ||
31 | + int dernier; | ||
32 | +}liste; | ||
33 | + | ||
24 | // Fonction permettant de savoir si la structure est vide | 34 | // Fonction permettant de savoir si la structure est vide |
25 | -bool is_empty_tree(Node Tree); | 35 | +bool is_empty_tree(Node); |
26 | 36 | ||
27 | // Fonction permettant de savoir si le tableau 'next' est un tableau de pointeurs NULL | 37 | // Fonction permettant de savoir si le tableau 'next' est un tableau de pointeurs NULL |
28 | -bool is_leaf(Node Tree); | 38 | +bool is_leaf(Node); |
29 | 39 | ||
30 | // Initialisation de la structure accueillant le dictionnaire | 40 | // Initialisation de la structure accueillant le dictionnaire |
31 | -void init_tree(Node* Tree); | 41 | +void init_tree(Node*); |
32 | 42 | ||
33 | // Détermine l'indice de rangement dans le tableau 'next' du caractère 'letter' | 43 | // Détermine l'indice de rangement dans le tableau 'next' du caractère 'letter' |
34 | -int find_caract_indice(char letter); // Ne fonctionne pas pour les caractères accentués | ||
35 | - | 44 | +int find_caract_indice(char); // Ne fonctionne pas pour les caractères accentués |
36 | 45 | ||
37 | // Fonction d'ajout d'un mot 'word' dans la structure 'tree' de type 'arbre indexé' | 46 | // Fonction d'ajout d'un mot 'word' dans la structure 'tree' de type 'arbre indexé' |
38 | -void add_in_tree(Node Tree, char word[]); | 47 | +void add_in_tree(Node, char*); |
39 | 48 | ||
40 | // Fonction qui détermine si le caractère est un caractère de fin de mot (espace, ',', ';', '.', etc..) | 49 | // Fonction qui détermine si le caractère est un caractère de fin de mot (espace, ',', ';', '.', etc..) |
41 | -bool is_end_caract(char letter); | 50 | +bool is_end_caract(char); |
42 | 51 | ||
43 | // Renvoi l'indice maximum du mot 'word' | 52 | // Renvoi l'indice maximum du mot 'word' |
44 | -char max_index(char word[]); | 53 | +char max_index(char*); |
45 | 54 | ||
46 | // Détermine si le mot 'word' est présent dans l'arbre indexé | 55 | // Détermine si le mot 'word' est présent dans l'arbre indexé |
47 | -void scan_word(Node Tree, char word[], int* error, FILE*); | 56 | +void scan_word(Node, char*, int*, FILE*, int*); |
48 | 57 | ||
49 | // Retourne 'true' si le mot 'word' est non accentué, 'false' sinon | 58 | // Retourne 'true' si le mot 'word' est non accentué, 'false' sinon |
50 | -bool no_accent(char word[]); | 59 | +bool no_accent(char*); |
51 | 60 | ||
52 | // Transmet les mots du texte à analyser à 'scan_word' | 61 | // Transmet les mots du texte à analyser à 'scan_word' |
53 | -void read_txt(FILE* fp, Node* Tree, int* error, FILE*); | 62 | +void read_txt(FILE*, Node*, int*, int*); |
54 | 63 | ||
55 | // Transmet les mots de la biliothèque à 'add_in_tree' | 64 | // Transmet les mots de la biliothèque à 'add_in_tree' |
56 | -void read_lib(FILE* fp, Node* Tree); | ||
57 | - | ||
58 | -// A SUPPRIMER | ||
59 | -void print_tree(Node Tree, int index); | 65 | +void read_lib(FILE*, Node*); |
60 | 66 | ||
61 | -// A SUPPRIMER | ||
62 | -int find_index(Node tree); | ||
63 | - | ||
64 | -// A SUPPRIMER | ||
65 | -void print_first(Node Tree); | 67 | +// Affiche l'arbre indexé |
68 | +void print_tree(Node, int, char*); | ||
66 | 69 | ||
67 | // Libère l'espace mémoire associé à l'arbre indexé | 70 | // Libère l'espace mémoire associé à l'arbre indexé |
68 | -void free_tree(Node* Tree); | 71 | +void free_tree(Node*); |
69 | 72 | ||
70 | // Ajoute une erreur | 73 | // Ajoute une erreur |
71 | -void add_error(int*, char*, int, Node, FILE*); | 74 | +void add_error(int*, char*, int, Node, FILE*, int*); |
72 | 75 | ||
73 | // Corrige les erreurs | 76 | // Corrige les erreurs |
74 | -void make_correction(char *, int, Node, FILE*); | 77 | +void make_correction(char *, int, Node, FILE*, int*); |
75 | 78 | ||
76 | // Initialise le programme | 79 | // Initialise le programme |
77 | void init_pgrm(void); | 80 | void init_pgrm(void); |
81 | + | ||
82 | +// Ajoute un caractère à une chaine de caractères | ||
83 | +void add_caract(char*, char); | ||
84 | + | ||
85 | +// Supprime le dernier caractère d'une chaine | ||
86 | +void supp_caract(char*); | ||
87 | + | ||
88 | +// Initialise le tableau contenant les mots de correction | ||
89 | +void init_correction(correction*); | ||
90 | + | ||
91 | +// Imprime les mots possibles pour la correction | ||
92 | +void make_tree_correct(Node, int, char*, char*, correction); | ||
93 | + | ||
94 | +// Ajoute un mot dans une liste contigûe | ||
95 | +void add_in_liste(correction, char*, char*); | ||
96 | + | ||
97 | +// Choix du mot corrigé | ||
98 | +void choice_word(correction, FILE*, char, int, int*, bool); | ||
99 | + | ||
100 | +// Détecte les caractères spéciaux | ||
101 | +bool detect_end_caract(char*, char*); | ||
102 | + | ||
103 | +// Corrige le mot | ||
104 | +void correct_word(char*, FILE*, int); |