Commit 73e92d24cbdb14c242bba6f89b955ab24519a877

Authored by vsalingu
1 parent 04b8ce94

Modifications de la fonction d'affichage

Showing 2 changed files with 23 additions and 15 deletions   Show diff stats
No preview for this file type
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include <stdbool.h> 3 #include <stdbool.h>
  4 +#include <string.h>
4 5
5 6
6 typedef struct cell* ptarbre; 7 typedef struct cell* ptarbre;
@@ -58,7 +59,7 @@ void ajout_dico(ptarbre *parbre, ptarbre *parbresuiv, char lettre) @@ -58,7 +59,7 @@ void ajout_dico(ptarbre *parbre, ptarbre *parbresuiv, char lettre)
58 printf("ajout lettre : %c à %p \n",(*parbresuiv)->lettre, parbresuiv); 59 printf("ajout lettre : %c à %p \n",(*parbresuiv)->lettre, parbresuiv);
59 } 60 }
60 61
61 -void affiche_dico(ptarbre arbre) 62 +void affiche_dico(ptarbre arbre, int n_lettre, char mot[])
62 // affiche tout le dictionnaire à partir de l'arbre (donc le numéro de lettre) sélectionné 63 // affiche tout le dictionnaire à partir de l'arbre (donc le numéro de lettre) sélectionné
63 { 64 {
64 if(arbre == NULL) 65 if(arbre == NULL)
@@ -67,17 +68,23 @@ void affiche_dico(ptarbre arbre) @@ -67,17 +68,23 @@ void affiche_dico(ptarbre arbre)
67 } 68 }
68 else 69 else
69 { 70 {
70 - if (arbre->fils!=NULL) 71 + if (arbre->fils != NULL)
71 { 72 {
72 - printf("%c\n", (arbre->lettre));  
73 - while(arbre->suivant !=NULL)  
74 - {  
75 - printf("%c\n", (arbre->lettre));  
76 - affiche_dico(arbre->fils);  
77 - arbre=arbre->suivant;  
78 - } 73 + printf("%c",arbre->lettre);
  74 + mot[n_lettre]=arbre->lettre;
  75 + n_lettre++;
  76 + affiche_dico(arbre->fils,n_lettre,mot);
79 } 77 }
80 - } 78 + printf("\n");
  79 + if (arbre->suivant != NULL)
  80 + {
  81 + printf("%s",mot);
  82 + affiche_dico(arbre->suivant, n_lettre, mot);
  83 + }
  84 + mot[n_lettre]=0;
  85 + n_lettre--;
  86 +
  87 + }
81 88
82 } 89 }
83 90
@@ -101,7 +108,8 @@ int main() @@ -101,7 +108,8 @@ int main()
101 ptarbre arbre_originel,arbre,arbre_prec; 108 ptarbre arbre_originel,arbre,arbre_prec;
102 arbre_originel=NULL; 109 arbre_originel=NULL;
103 arbre=NULL; 110 arbre=NULL;
104 - char c,t; 111 + char c,t, mot[30];
  112 + int n_lettre=0;
105 ptarbre rec; 113 ptarbre rec;
106 // Ouvrir fichier 114 // Ouvrir fichier
107 FILE *fp = fopen("words1.txt","r"); 115 FILE *fp = fopen("words1.txt","r");
@@ -133,10 +141,10 @@ int main() @@ -133,10 +141,10 @@ int main()
133 { 141 {
134 142
135 printf("rech suiv = NUll \n"); 143 printf("rech suiv = NUll \n");
136 - ajout_dico(&(arbre),&(rec),c); 144 + ajout_dico(&(arbre),&(rec->suivant),c);
137 // printf("ajout de : %c à %p et fils :%p\n", rec->lettre, rec, rec->fils); 145 // printf("ajout de : %c à %p et fils :%p\n", rec->lettre, rec, rec->fils);
138 arbre_prec=arbre; 146 arbre_prec=arbre;
139 - arbre=rec->fils; 147 + arbre=rec->suivant->fils;
140 } 148 }
141 149
142 150
@@ -159,14 +167,14 @@ int main() @@ -159,14 +167,14 @@ int main()
159 arbre_prec->fin_mot=true; // Cette lettre est la dernière du mot 167 arbre_prec->fin_mot=true; // Cette lettre est la dernière du mot
160 } 168 }
161 169
162 - affiche_dico(arbre_originel); 170 + affiche_dico(arbre_originel,n_lettre,mot);
163 printf("remise à 0\n"); 171 printf("remise à 0\n");
164 arbre=arbre_originel; // On revient en haut de l'arbre pour commencer un nouveau mot 172 arbre=arbre_originel; // On revient en haut de l'arbre pour commencer un nouveau mot
165 } 173 }
166 //arbre=arbre_originel; 174 //arbre=arbre_originel;
167 } 175 }
168 printf("arbre originel lettre %c \n", arbre_originel->fils->lettre); 176 printf("arbre originel lettre %c \n", arbre_originel->fils->lettre);
169 - affiche_dico(arbre_originel); 177 + affiche_dico(arbre_originel,n_lettre,mot);
170 free_tree(&arbre); 178 free_tree(&arbre);
171 fclose(fp); 179 fclose(fp);
172 180