diff --git a/main.c b/main.c index 807b613..7011701 100644 --- a/main.c +++ b/main.c @@ -1,81 +1,90 @@ #include "tree.h" -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { setlocale(LC_ALL, ""); + //Récupération du fichier contenant le dictionnaire char fichier[100]; - if(argc==3) strcpy(fichier,argv[1]); + if (argc == 3) strcpy(fichier, argv[1]); - FILE* fp = NULL; - if(argc != 3)wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n"); - do{ - if(argc != 3)wscanf(L"%s",fichier); - fp = fopen(fichier,"r"); - if(fp == NULL) + FILE *fp = NULL; + if (argc != 3) wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n"); + do + { + if (argc != 3) wscanf(L"%s", fichier); + fp = fopen(fichier, "r"); + if (fp == NULL) { - if(argc==3){ - wprintf(L"Le fichier n'est pas accessible !\n"); - return 1; - } - else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); + if (argc == 3) + { + wprintf(L"Le fichier n'est pas accessible !\n"); + return 1; + } + else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); } - }while(fp == NULL); - + } while (fp == NULL); + //Choix des séparateurs wchar_t separateur[] = L",?;.:/!*+\\\"()=«»[]"; - wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n",separateur); + wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n", separateur); char changer_separateur = ' '; - wscanf(L" %c",&changer_separateur); - if(changer_separateur == 'Y' || changer_separateur == 'y') + wscanf(L" %c", &changer_separateur); + if (changer_separateur == 'Y' || changer_separateur == 'y') { - do{ + do + { wprintf(L"Entrez la nouvelle liste des séparateur :\n"); - wscanf(L"%ls",separateur); - wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n",separateur); - wscanf(L" %c",&changer_separateur); - }while(changer_separateur!='Y' && changer_separateur!='y'); + wscanf(L"%ls", separateur); + wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n", separateur); + wscanf(L" %c", &changer_separateur); + } while (changer_separateur != 'Y' && changer_separateur != 'y'); } //Chargement du dictionnaire dico Dico; init_dico(&Dico); - load_dico(fp,&Dico,separateur); + load_dico(fp, &Dico, separateur); fclose(fp); wprintf(L"Chargement du dictionnaire effectué!\n\n"); //Récupération du fichier contenant les mots à tester char recommencer = ' '; - do{ - FILE* fp = NULL; - if(argc != 3)wprintf(L"Quel fichier voulez-vous tester ?\n"); - else strcpy(fichier,argv[2]); - do{ - if(argc != 3)wscanf(L"%s",fichier); - fp = fopen(fichier,"r"); - if(fp == NULL) + do + { + FILE *fp = NULL; + if (argc != 3) wprintf(L"Quel fichier voulez-vous tester ?\n"); + else strcpy(fichier, argv[2]); + do { - if(argc==3){ - wprintf(L"Le fichier n'est pas accessible !\n"); - return 1; - } - else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); - } - }while(fp == NULL); + if (argc != 3) wscanf(L"%s", fichier); + fp = fopen(fichier, "r"); + if (fp == NULL) + { + if (argc == 3) + { + wprintf(L"Le fichier n'est pas accessible !\n"); + return 1; + } + else wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); + } + } while (fp == NULL); - //Vérification des mots du fichier - int result = find_erreur(Dico,fp,separateur); - wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result); - fclose(fp); + //Vérification des mots du fichier + int result = find_erreur(Dico, fp, separateur); + wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n", result); + fclose(fp); + + //Demande si volonté de recommencer + if (argc != 3){ + wprintf(L"Voulez vous tester un autre fichier ?[Y]\n"); + wscanf(L" %c", &recommencer); + }else recommencer = ' '; - //Demande si volonté de recommencer - if(argc != 3)wprintf(L"Voulez vous tester un autre fichier ?[Y]\n"); - if(argc != 3)wscanf(L" %c",&recommencer); - else recommencer = ' '; - }while(recommencer == 'Y' || recommencer == 'y'); + } while (recommencer == 'Y' || recommencer == 'y'); - free_dico(Dico);//libérer la mémoire du dictionnaire + free_dico(Dico); //libérer la mémoire du dictionnaire wprintf(L"Fin du programme\n"); diff --git a/tree.c b/tree.c index b9b992b..a57aad7 100644 --- a/tree.c +++ b/tree.c @@ -164,8 +164,9 @@ void free_dico(dico Dico) //Recherche dans le dictionnaire d'un mot int find_mot(dico Dico, wchar_t mot[]) { - if (mot == NULL)return 0; + if (mot == NULL)return 0;//Pas de mot + //Récupération de l'indice du dico correspondant à la première lettre de l'arbre int fl = -1; if (mot[0] >= 'a' && mot[0] <= 'z') { @@ -181,7 +182,7 @@ int find_mot(dico Dico, wchar_t mot[]) break; } } - if (fl == -1){ + if (fl == -1){//Si la première lettre n'a pas été trouvé le mot n'existe pas dans le dico wprintf(mot); wprintf(L"\n"); return 1; @@ -189,9 +190,9 @@ int find_mot(dico Dico, wchar_t mot[]) } int taille = size(mot); - if (taille == 1 && Dico.tab_ptr_tree[fl] != NULL) + if (taille == 1 && Dico.tab_ptr_tree[fl] != NULL)//Mot de 1 lettre et arbre existant { - if (Dico.tab_ptr_tree[fl]->fin == 0){ + if (Dico.tab_ptr_tree[fl]->fin == 0){//la lettre n'est pas une lettre de terminaison wprintf(mot); wprintf(L"\n"); return 1; @@ -200,21 +201,21 @@ int find_mot(dico Dico, wchar_t mot[]) if (Dico.tab_ptr_tree[fl] == NULL)return 1; //faux struct node *ptr_node = Dico.tab_ptr_tree[fl]; - for (int i = 1; i < taille; i++) + for (int i = 1; i < taille; i++)//On teste toute les lettres du mot { - if (ptr_node->nbr_fils == 0){ + if (ptr_node->nbr_fils == 0){//Le noeud actuel n'a pas de fils wprintf(mot); wprintf(L"\n"); return 1; } - for (int k = 0; k < (ptr_node->nbr_fils); k++) + for (int k = 0; k < (ptr_node->nbr_fils); k++)//Onteste tous les fils { - if (ptr_node->fils[k]->val == mot[i]) + if (ptr_node->fils[k]->val == mot[i])//on trouve la lettre { ptr_node = ptr_node->fils[k]; break; } - else if (k + 1 == ptr_node->nbr_fils){ + else if (k + 1 == ptr_node->nbr_fils){//on trouve pas wprintf(mot); wprintf(L"\n"); return 1; @@ -222,7 +223,7 @@ int find_mot(dico Dico, wchar_t mot[]) } } - if (ptr_node->fin == 0){ + if (ptr_node->fin == 0){//on est à la dernière lettre, on regarde si c'est une lettre terminaison wprintf(mot); wprintf(L"\n"); return 1; -- libgit2 0.21.2