Commit 6ab96f9ea9f3c093b3d6a8f26e51c74300853c54

Authored by rsSimonin
1 parent 7d0a6328

tout marche

Showing 1 changed file with 23 additions and 33 deletions   Show diff stats
... ... @@ -17,7 +17,7 @@ typedef struct dico {
17 17  
18 18  
19 19 int calculcase(char c){
20   - return 'c'-'a';
  20 + return c-'a';
21 21 }
22 22  
23 23 void arbre_vide(struct arbre ** pt_arbre)
... ... @@ -43,23 +43,13 @@ void ini_dico(struct dico * pt_dico){
43 43 }
44 44  
45 45  
46   -void ajout_mot(struct arbre *arbrecourant,char *mot,int i){
47   -// Arbre *arbrecourant=malloc(sizeof(struct arbre));
48   -// if( (*ppt_dico)->alpha[calculcase(mot[0])]==NULL){
49   -// arbrecourant->val=mot[0];
50   -// arbrecourant->finmot=false;
51   -// for(int j=0;j<26;j++){
52   -// arbrecourant->suite[j]=NULL;
53   -// }
54   -// }
55   -// arbrecourant=(*ppt_dico)->alpha[calculcase(mot[0])];
56   -//
57   -// int i=1;
58   - printf("%s:length:%d\n",mot,strlen(mot));
  46 +void ajout_mot(struct arbre **arbrecourant,char *mot,int i){
  47 +
  48 + printf("%s:length:%zu \n",mot,strlen(mot));
59 49  
60   - while(mot[i]!='(mot[i]!='\0'){'){
  50 + if(mot[i]!='(mot[i]!='\0'){'){
61 51 printf("\nlettre:%c; i=%d\n",mot[i],i);
62   - if (arbrecourant->suite[calculcase(mot[i])]==NULL){
  52 + if (*arbrecourant==NULL){
63 53  
64 54 printf("creation arbre\n");
65 55 Arbre *monarbre=malloc(sizeof(struct arbre));
... ... @@ -68,13 +58,11 @@ void ajout_mot(struct arbre *arbrecourant,char *mot,int i){
68 58 for(int j=0;j<26;j++){
69 59 monarbre->suite[j]=NULL;
70 60 }
71   - arbrecourant=monarbre;
  61 + *arbrecourant=monarbre;
72 62 // printf("%c\n",(*pt_arbre)->val);
73   -
74 63 }
75   - arbrecourant=arbrecourant->suite[calculcase(mot[i])];
76 64 i++;
77   - ajout_mot(arbrecourant->suite[calculcase(mot[i])],mot,i);
  65 + ajout_mot(&((*arbrecourant)->suite[calculcase(mot[i])]),mot,i);
78 66 }
79 67  
80 68 }
... ... @@ -83,19 +71,22 @@ void charger_arbre(FILE *fp, struct dico **ppt_dico)
83 71 { char mot[20];
84 72 ini_dico(*ppt_dico);
85 73 while (fscanf(fp, "%s", mot)==1){
86   - printf("mot:%s\n",mot);
  74 + printf("mot:%s\n\n\n",mot);
87 75  
88   - Arbre *arbrecourant=malloc(sizeof(struct arbre));
  76 + printf("\nlettre:%c\n",mot[0]);
  77 + /*
89 78 if( (*ppt_dico)->alpha[calculcase(mot[0])]==NULL){
  79 + printf("creation 1er niveau\n");
  80 + Arbre *arbrecourant=malloc(sizeof(struct arbre));
90 81 arbrecourant->val=mot[0];
91 82 arbrecourant->finmot=false;
92 83 for(int j=0;j<26;j++){
93 84 arbrecourant->suite[j]=NULL;
94 85 }
95   - }
96   - arbrecourant=(*ppt_dico)->alpha[calculcase(mot[0])];
97   - int i=1;
98   - ajout_mot(&arbrecourant,mot,i);
  86 + (*ppt_dico)->alpha[calculcase(mot[0])]=arbrecourant;
  87 + }*/
  88 + //int index=1;
  89 + ajout_mot(&((*ppt_dico)->alpha[calculcase(mot[0])]),mot,0);
99 90 }
100 91 return ;
101 92 }
... ... @@ -106,29 +97,28 @@ void free_arbre(struct arbre *pt_arbre){
106 97 return ;
107 98 }
108 99 for(int i=0;i<26;i++){
109   - free_arbre(pt_arbre->suite[i]);
  100 + free_arbre((pt_arbre->suite[i]));
110 101 }
  102 + printf("lettre:%c\n",pt_arbre->val);
111 103 free(pt_arbre);
112   -
113 104 }
114 105  
115 106 void free_dico(struct dico *pt_dico){
116 107 if (pt_dico==NULL){
117 108 return ;
118 109 }
  110 +
119 111 for(int i=0;i<26;i++){
120   - free_arbre(pt_dico->alpha[i]);
121   - free(pt_dico->alpha[i]);
  112 + free_arbre((pt_dico->alpha[i]));
122 113 }
123   - free(pt_dico);
124 114  
  115 + free(pt_dico);
125 116 }
126 117  
127 118 void affiche_arbre(struct arbre *arbre){
128 119 if(arbre==NULL){
129 120 return ;
130 121 }
131   - printf("%c\n",arbre->val);
132 122 for(int i=0;i<26;i++){
133 123 affiche_arbre(arbre->suite[i]);
134 124 }
... ... @@ -157,7 +147,7 @@ int main (){
157 147 affiche_dico(mondico);
158 148  
159 149  
160   - free(mondico);
  150 + free_dico(mondico);
161 151 fclose(fp);
162 152 return 0;
163 153 }
... ...