Commit fb82dc550e2038caf4c3109499b562b6c6bdf01e
1 parent
6394a205
dico ok à vérifier avec une fonction d'affichage
Showing
1 changed file
with
44 additions
and
41 deletions
Show diff stats
@@ -6,7 +6,7 @@ typedef struct cell* ptarbre; | @@ -6,7 +6,7 @@ typedef struct cell* ptarbre; | ||
6 | typedef struct cell* ptcellule; | 6 | typedef struct cell* ptcellule; |
7 | 7 | ||
8 | typedef struct cell { | 8 | typedef struct cell { |
9 | - int lettre; | 9 | + char lettre; |
10 | ptarbre arbre; // Descend d'un étage dans le mot (lettre suivante du mot) | 10 | ptarbre arbre; // Descend d'un étage dans le mot (lettre suivante du mot) |
11 | ptcellule suivant; // Lettre suivante stockée à l'étage arbre en (ieme position) | 11 | ptcellule suivant; // Lettre suivante stockée à l'étage arbre en (ieme position) |
12 | } cell; | 12 | } cell; |
@@ -18,34 +18,34 @@ void init_dico() | @@ -18,34 +18,34 @@ void init_dico() | ||
18 | arbre=NULL; | 18 | arbre=NULL; |
19 | } | 19 | } |
20 | */ | 20 | */ |
21 | -ptarbre rech(ptarbre arbre, int lettre) | 21 | +ptarbre rech(ptarbre arbre, char lettre) |
22 | // recherche une lettre en ième position (correspondant à arbre) | 22 | // recherche une lettre en ième position (correspondant à arbre) |
23 | // Retourne l'adresse de l'abre contenant la lettre à cette position | 23 | // Retourne l'adresse de l'abre contenant la lettre à cette position |
24 | { | 24 | { |
25 | while((arbre!=NULL) && (arbre->lettre != lettre)) | 25 | while((arbre!=NULL) && (arbre->lettre != lettre)) |
26 | { | 26 | { |
27 | - printf("lettre : %c lettre cherchee : %c\n", arbre->lettre,lettre); | 27 | + printf("lettre : %c lettre cherchee : %c\n", (arbre->lettre),lettre); |
28 | arbre=arbre->suivant; | 28 | arbre=arbre->suivant; |
29 | } | 29 | } |
30 | return arbre; | 30 | return arbre; |
31 | } | 31 | } |
32 | -void ajout_dico_tete(ptarbre *parbre, int lettre) | 32 | +void init_dico(ptarbre *parbre, char lettre) |
33 | { | 33 | { |
34 | - parbre=malloc(sizeof(cell)); | ||
35 | - (*parbre)->lettre=lettre; | ||
36 | - printf("arbre lettre %c\n",(*parbre)->lettre); | ||
37 | - (*parbre)->arbre=NULL; | 34 | + (*parbre)=malloc(sizeof(cell)); |
35 | + (*parbre)->arbre=malloc(sizeof(cell)); | ||
38 | (*parbre)->suivant=NULL; | 36 | (*parbre)->suivant=NULL; |
37 | + (*parbre)->lettre=lettre; | ||
38 | + printf("init dico\n"); | ||
39 | } | 39 | } |
40 | 40 | ||
41 | -void ajout_dico(ptarbre arbre, ptarbre arbresuiv, int lettre) | 41 | +void ajout_dico(ptarbre *parbre, ptarbre *parbresuiv, char lettre) |
42 | { | 42 | { |
43 | - arbresuiv=malloc(sizeof(cell)); | ||
44 | - arbre->suivant=arbresuiv; // On relie la nouvelle lettre à l'avant dernière lettre | ||
45 | - arbresuiv->lettre=lettre; | ||
46 | - printf("arbre lettre : %c \n",arbresuiv->lettre); | ||
47 | - arbresuiv->arbre=NULL; | ||
48 | - arbresuiv->suivant=NULL; | 43 | + *parbresuiv=malloc(sizeof(cell)); |
44 | + (*parbre)->suivant=*parbresuiv; // On relie la nouvelle lettre à l'avant dernière lettre | ||
45 | + (*parbresuiv)->arbre=malloc(sizeof(cell)); | ||
46 | + (*parbresuiv)->suivant=NULL; | ||
47 | + (*parbresuiv)->lettre=lettre; | ||
48 | + printf("ajout lettre : %c \n",(*parbresuiv)->lettre); | ||
49 | } | 49 | } |
50 | 50 | ||
51 | void affiche_dico(ptarbre arbre) | 51 | void affiche_dico(ptarbre arbre) |
@@ -58,9 +58,9 @@ void affiche_dico(ptarbre arbre) | @@ -58,9 +58,9 @@ void affiche_dico(ptarbre arbre) | ||
58 | int main() | 58 | int main() |
59 | { | 59 | { |
60 | ptarbre arbre_originel,arbre; | 60 | ptarbre arbre_originel,arbre; |
61 | - arbre_originel=malloc(sizeof(cell)); | ||
62 | - arbre=arbre_originel; | 61 | + arbre_originel=NULL; |
63 | char c,t; | 62 | char c,t; |
63 | + ptarbre rec; | ||
64 | // Ouvrir fichier | 64 | // Ouvrir fichier |
65 | FILE *fp = fopen("words1.txt","r"); | 65 | FILE *fp = fopen("words1.txt","r"); |
66 | if (fp==NULL) | 66 | if (fp==NULL) |
@@ -74,40 +74,43 @@ int main() | @@ -74,40 +74,43 @@ int main() | ||
74 | // { | 74 | // { |
75 | if (c != '\n') | 75 | if (c != '\n') |
76 | { | 76 | { |
77 | - printf(" c %c\n", c); | ||
78 | - printf("adresse %d\n ", rech(arbre,c)); | ||
79 | - if (rech(arbre,c)==NULL) // Cas où c'est le premier mot | 77 | + if (arbre_originel==NULL) // Cas où c'est le premier mot |
80 | { | 78 | { |
81 | - printf("rech =NULL \n"); | ||
82 | - printf("rech :%p \n", rech(arbre,c)); | ||
83 | - ajout_dico_tete(&arbre,c); | ||
84 | - arbre=arbre->arbre; | ||
85 | - } | ||
86 | - else if (rech(arbre->suivant,c)==NULL) | ||
87 | - { | ||
88 | - printf("rech suiv = NUll \n"); | ||
89 | - ajout_dico(arbre,arbre->suivant,c); | ||
90 | - arbre=arbre->suivant; | ||
91 | - } | ||
92 | - | 79 | + printf("arbre =NULL \n"); |
80 | + init_dico(&arbre_originel,c); | ||
81 | + | ||
82 | + arbre=arbre_originel->arbre; | ||
83 | + } | ||
93 | 84 | ||
94 | - else | 85 | + else // Cas où le dico n'est pas vide |
95 | { | 86 | { |
96 | - printf("rech pas null\n"); | ||
97 | - while (rech(arbre->suivant,c)!=NULL) // Cas où le début du mot existe déjà et qu'on le complète | 87 | + printf(" c: %c\n", c); |
88 | + rec=rech(arbre,c); | ||
89 | + printf("adr rech %p\n",rech(arbre,c)); | ||
90 | + | ||
91 | + if (rec==NULL) | ||
98 | { | 92 | { |
99 | - | ||
100 | - arbre=rech(arbre->suivant,c)->arbre; // On va à l'étage d'après pour former le mot dans l'arbre | 93 | + printf("rech = NUll \n"); |
94 | + ajout_dico(&(arbre),&(rec),c); | ||
95 | + arbre=rec->arbre; | ||
96 | + } | ||
97 | + | ||
98 | + | ||
99 | + else | ||
100 | + {// Cas où le début du mot existe déjà et qu'on le complète | ||
101 | + printf("rech pas null\n"); | ||
102 | + arbre=rec->arbre; // On va à l'étage d'après pour former le mot dans l'arbre | ||
101 | // affiche_dico(arbre); | 103 | // affiche_dico(arbre); |
102 | } | 104 | } |
103 | - ajout_dico(arbre, arbre->suivant,c); | ||
104 | - printf("lettre %c \n",arbre->lettre); | 105 | + |
106 | + // printf("lettre %c \n",arbre->lettre); | ||
105 | } | 107 | } |
106 | - } | 108 | + } |
107 | else { | 109 | else { |
110 | + printf("remise à 0\n"); | ||
108 | arbre=arbre_originel; | 111 | arbre=arbre_originel; |
109 | } | 112 | } |
110 | - //arbre=arbre_originel; // On revient en haut de l'arbre pour commencer un nouveau mot | 113 | + //arbre=arbre_originel; // On revient en haut de l'arbre pour commencer un nouveau mot |
111 | } | 114 | } |
112 | 115 | ||
113 | 116 |