Commit 541fd89408058f82f937b30c2ac43e7964c5ba71

Authored by mertz
1 parent 9cf06b18

on_avance_tree

Showing 3 changed files with 65 additions and 29 deletions   Show diff stats
@@ -99152,20 +99152,20 @@ zwieback's @@ -99152,20 +99152,20 @@ zwieback's
99152 zygote 99152 zygote
99153 zygote's 99153 zygote's
99154 zygotes 99154 zygotes
99155 -Ångström  
99156 -éclair  
99157 -éclair's  
99158 -éclairs  
99159 -éclat  
99160 -éclat's  
99161 -élan  
99162 -élan's  
99163 -émigré  
99164 -émigré's  
99165 -émigrés  
99166 -épée  
99167 -épée's  
99168 -épées  
99169 -étude  
99170 -étude's  
99171 -études 99155 +zÅngström
  99156 +zéclair
  99157 +zéclair's
  99158 +zéclairs
  99159 +zéclat
  99160 +zéclat's
  99161 +zélan
  99162 +zélan's
  99163 +zémigré
  99164 +zémigré's
  99165 +zémigrés
  99166 +zépée
  99167 +zépée's
  99168 +zépées
  99169 +zétude
  99170 +zétude's
  99171 +zétudes
@@ -43,32 +43,68 @@ int is_leaf(struct node *tree) @@ -43,32 +43,68 @@ int is_leaf(struct node *tree)
43 return tree->fin||tree->fils[0]==NULL; 43 return tree->fin||tree->fils[0]==NULL;
44 } 44 }
45 45
46 -void add(struct node ***tab_ptr_tree, int val[],int taille, int fl) 46 +void add(struct node ***tab_ptr_tree, char val[],int taille, int fl)
47 { 47 {
  48 + Node** node = tab_ptr_tree[fl];
48 for(int i=0;i<taille;i++) 49 for(int i=0;i<taille;i++)
49 { 50 {
50 - if(*(tab_ptr_tree[fl])==NULL){cons_tree(tab_ptr_tree[fl],val[i]);continue;}  
51 - int trouve = 0;  
52 - for(int j=0;j<(*(tab_ptr_tree[fl]))->nbr_fils;j++) 51 + if(node==NULL){
  52 + node = malloc(sizeof(struct node));
  53 + cons_tree(node,val[i]);continue;
  54 + printf("%d",(*node)->val);
  55 + }
  56 + int trouve = -1;
  57 + for(int j=0;j<(*node)->nbr_fils;j++)
53 { 58 {
54 - if((*(tab_ptr_tree[fl]))->val==val[i]) 59 + if((*node)->fils[j]->val==val[i])
55 { 60 {
56 - trouve=1; 61 + trouve=j;
57 break; 62 break;
58 } 63 }
59 } 64 }
60 - if(trouve == 0)  
61 - {  
62 - //ajouter fils 65 + if(trouve == -1)
  66 + {//ajouter fils
  67 + (*node)->nbr_fils++;
  68 + (*node)->fils = realloc((*node)->fils,((*node)->nbr_fils)*sizeof(struct node*));
  69 + cons_tree(&((*node)->fils[((*node)->nbr_fils)-1]),val[i]);
  70 + trouve = 0;
63 } 71 }
  72 + *node = (*node)->fils[trouve];
  73 + if(i==taille-1)
  74 + {
  75 + (*node)->fin=1;
  76 + }
64 } 77 }
65 //mettre fin à 1 pour le bon 78 //mettre fin à 1 pour le bon
66 //if(i==taille-1)(*(tab_ptr_tree[fl]))->fin=1; // 79 //if(i==taille-1)(*(tab_ptr_tree[fl]))->fin=1; //
67 } 80 }
68 81
69 -void load_tree(FILE *fp, struct node **ptr_tree) 82 +int size(char val[])
  83 +{
  84 + int cpt = 0;
  85 + while(val[cpt]!='\0')
  86 + {
  87 + cpt++;
  88 + }
  89 + return cpt;
  90 +}
  91 +
  92 +
  93 +void load_tree(FILE *fp, struct node ***tab_ptr_tree)
70 { 94 {
71 //fl (first letter) 95 //fl (first letter)
  96 + char val[50];
  97 +
  98 + while(fscanf(fp, "%s",val)==1)
  99 + {
  100 + if(val[0]<97)val[0]+=32;
  101 + val[0]-=97;
  102 + add(tab_ptr_tree,val,size(val),(int)val[0]);
  103 + }
  104 +
  105 + //On peut tester la bonne ou mauvaise terminaison de la lecture
  106 + if(feof(fp)) printf("Fin normal de lecture\n");
  107 + if(ferror(fp)) printf("ERREUR de lecture\n");
72 } 108 }
73 109
74 void free_tree(struct node **ptr_tree) 110 void free_tree(struct node **ptr_tree)
@@ -14,8 +14,8 @@ void mk_empty_tree(struct node **); @@ -14,8 +14,8 @@ void mk_empty_tree(struct node **);
14 14
15 int is_leaf(struct node *); 15 int is_leaf(struct node *);
16 16
17 -void add(struct node ***, int* ,int ,int); 17 +void add(struct node ***, char* ,int ,int);
18 18
19 -void load_tree(FILE *, struct node **); 19 +void load_tree(FILE *, struct node ***);
20 20
21 void free_tree(struct node **); 21 void free_tree(struct node **);