From 541fd89408058f82f937b30c2ac43e7964c5ba71 Mon Sep 17 00:00:00 2001 From: mertz Date: Tue, 2 Apr 2019 15:55:48 +0200 Subject: [PATCH] on_avance_tree --- american-english | 34 +++++++++++++++++----------------- tree.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- tree.h | 4 ++-- 3 files changed, 65 insertions(+), 29 deletions(-) diff --git a/american-english b/american-english index 3f9b27f..d36e3c7 100644 --- a/american-english +++ b/american-english @@ -99152,20 +99152,20 @@ zwieback's zygote zygote's zygotes -Ångström -éclair -éclair's -éclairs -éclat -éclat's -élan -élan's -émigré -émigré's -émigrés -épée -épée's -épées -étude -étude's -études +zÅngström +zéclair +zéclair's +zéclairs +zéclat +zéclat's +zélan +zélan's +zémigré +zémigré's +zémigrés +zépée +zépée's +zépées +zétude +zétude's +zétudes diff --git a/tree.c b/tree.c index cb91941..9135def 100644 --- a/tree.c +++ b/tree.c @@ -43,32 +43,68 @@ int is_leaf(struct node *tree) return tree->fin||tree->fils[0]==NULL; } -void add(struct node ***tab_ptr_tree, int val[],int taille, int fl) +void add(struct node ***tab_ptr_tree, char val[],int taille, int fl) { + Node** node = tab_ptr_tree[fl]; for(int i=0;inbr_fils;j++) + if(node==NULL){ + node = malloc(sizeof(struct node)); + cons_tree(node,val[i]);continue; + printf("%d",(*node)->val); + } + int trouve = -1; + for(int j=0;j<(*node)->nbr_fils;j++) { - if((*(tab_ptr_tree[fl]))->val==val[i]) + if((*node)->fils[j]->val==val[i]) { - trouve=1; + trouve=j; break; } } - if(trouve == 0) - { - //ajouter fils + if(trouve == -1) + {//ajouter fils + (*node)->nbr_fils++; + (*node)->fils = realloc((*node)->fils,((*node)->nbr_fils)*sizeof(struct node*)); + cons_tree(&((*node)->fils[((*node)->nbr_fils)-1]),val[i]); + trouve = 0; } + *node = (*node)->fils[trouve]; + if(i==taille-1) + { + (*node)->fin=1; + } } //mettre fin à 1 pour le bon //if(i==taille-1)(*(tab_ptr_tree[fl]))->fin=1; // } -void load_tree(FILE *fp, struct node **ptr_tree) +int size(char val[]) +{ + int cpt = 0; + while(val[cpt]!='\0') + { + cpt++; + } + return cpt; +} + + +void load_tree(FILE *fp, struct node ***tab_ptr_tree) { //fl (first letter) + char val[50]; + + while(fscanf(fp, "%s",val)==1) + { + if(val[0]<97)val[0]+=32; + val[0]-=97; + add(tab_ptr_tree,val,size(val),(int)val[0]); + } + + //On peut tester la bonne ou mauvaise terminaison de la lecture + if(feof(fp)) printf("Fin normal de lecture\n"); + if(ferror(fp)) printf("ERREUR de lecture\n"); } void free_tree(struct node **ptr_tree) diff --git a/tree.h b/tree.h index 314d952..be7dfcd 100644 --- a/tree.h +++ b/tree.h @@ -14,8 +14,8 @@ void mk_empty_tree(struct node **); int is_leaf(struct node *); -void add(struct node ***, int* ,int ,int); +void add(struct node ***, char* ,int ,int); -void load_tree(FILE *, struct node **); +void load_tree(FILE *, struct node ***); void free_tree(struct node **); -- libgit2 0.21.2