diff --git a/doc.txt b/doc.txt index ff61a09..a1638d8 100644 --- a/doc.txt +++ b/doc.txt @@ -3,5 +3,5 @@ Doucement, Etrange. Odorat; odorant; L'ile, L'ocean; aaee''ee chiens chienne -chia +chie Doucement. diff --git a/lib.txt b/lib.txt index cdb5742..3365936 100644 --- a/lib.txt +++ b/lib.txt @@ -1,6 +1,18 @@ -banane -banc -bilan -chien -chienne - +bien +bon +bio +blanc +banc +banane +aspirateur +chaussette +chien +chienne +chiens +Doucement +Etrange +Odorat +odorant +L'ile +L'ocean +aaee''ee \ No newline at end of file diff --git a/main.c b/main.c index a105433..8be3122 100644 --- a/main.c +++ b/main.c @@ -8,24 +8,39 @@ int main(int argc, char *argv[]) { + init_pgrm(); Node tree = NULL; int error = 0; FILE* fp_lib; FILE* fp_txt; + + if(argc < 3) + { + printf("Le nombre d'arguments est incorrect. Veuillez réessayer.\n"); + return EXIT_FAILURE; + } + fp_lib = fopen(argv[argc-2], "r"); fp_txt = fopen(argv[argc-1], "r"); + if(fp_lib==NULL || fp_txt==NULL) + { + printf("Erreur de lecture d'un des fichiers passés en paramètres.\n"); + return EXIT_FAILURE; + } + init_tree(&tree); read_lib(fp_lib, &tree); - read_txt(fp_txt, &tree, &error); + read_txt(fp_txt, &tree, &error, fp_txt); // printf("%p\n", tree); //print_first(tree); //printf("\n"); //print_tree(tree, 0); - - printf("erreurs : %d\n", error); + + 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]); + else printf("Dans le texte %s, %d mots ne sont pas dans le dictionnaire %s.\n", argv[argc-1], error, argv[argc-2]); free_tree(&tree); fclose(fp_lib); diff --git a/tree.c b/tree.c index 5aac33f..571e76f 100644 --- a/tree.c +++ b/tree.c @@ -102,7 +102,7 @@ char max_index(char word[]) return index; } -void scan_word(Node Tree, char word[], int* error) // si un mot démarre juste après un caractère de fin, la fonction ne lit pas les mots séparément +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 { bool endWord = false; bool stop = false; @@ -124,8 +124,7 @@ void scan_word(Node Tree, char word[], int* error) // si un mot démarre juste a } else { - printf("mot : %s erreur :%c %d \n", word, word[ind], word[ind]); - (*error)++; + add_error(error, word, ind, Tree, fp_txt); //printf("%d\n", ind); ind = max_index(word); //printf("%d\n", ind); @@ -135,11 +134,38 @@ void scan_word(Node Tree, char word[], int* error) // si un mot démarre juste a } if(!endWord && !stop) { - (*error)++; - printf("---%s---\n", word); + add_error(error, word, ind, Tree, fp_txt); } } +void add_error(int* error, char word[], int index, Node Tree, FILE* fp_txt) +{ + (*error)++; + if(index==0) + { + printf("Le mot %s ne correspond à aucun mot du dictionnaire.\n\n", word); + return; + } + else if(index #include #include +#include #define MAX 30 // taille maximale d'une chaîne lue dans un fichier #define NB_CARAC 27 // nombre de caractères différents pouvant être identifiés -> 89 avec accentués @@ -43,13 +44,13 @@ bool is_end_caract(char letter); char max_index(char word[]); // Détermine si le mot 'word' est présent dans l'arbre indexé -void scan_word(Node Tree, char word[], int* error); +void scan_word(Node Tree, char word[], int* error, FILE*); // Retourne 'true' si le mot 'word' est non accentué, 'false' sinon bool no_accent(char word[]); // Transmet les mots du texte à analyser à 'scan_word' -void read_txt(FILE* fp, Node* Tree, int* error); +void read_txt(FILE* fp, Node* Tree, int* error, FILE*); // Transmet les mots de la biliothèque à 'add_in_tree' void read_lib(FILE* fp, Node* Tree); @@ -66,3 +67,11 @@ void print_first(Node Tree); // Libère l'espace mémoire associé à l'arbre indexé void free_tree(Node* Tree); +// Ajoute une erreur +void add_error(int*, char*, int, Node, FILE*); + +// Corrige les erreurs +void make_correction(char *, int, Node, FILE*); + +// Initialise le programme +void init_pgrm(void); -- libgit2 0.21.2