Commit c62798e8c8f2ac51efe3f1f6f0df7775564db14c

Authored by rsimonin
1 parent f3c35adc

ajout fonction motdansarbre

Showing 1 changed file with 55 additions and 32 deletions   Show diff stats
1   -#include "arbre.h"
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +#include <stdbool.h>
  4 +#include <string.h>
  5 +#define TAILLE 27
2 6  
  7 +//#include "arbre.h"
3 8  
4   -// typedef struct arbre{
5   -// char val;
6   -// struct arbre *suite[TAILLE];
7   -// bool finmot; //1 si fin de mot
8   -// }Arbre;
9   -//
10   -// typedef struct dico {
11   -// Arbre *alpha[TAILLE];
12   -// }Dico;
  9 +
  10 +typedef struct arbre{
  11 + char val;
  12 + struct arbre *suite[TAILLE];
  13 + bool finmot; //1 si fin de mot
  14 +}Arbre;
  15 +
  16 +typedef struct dico {
  17 + Arbre *alpha[TAILLE];
  18 +}Dico;
13 19  
14 20  
15 21  
... ... @@ -31,9 +37,20 @@ bool est_vide(struct arbre *arbre)
31 37 return arbre==NULL;
32 38 }
33 39  
34   -bool fin_de_mot(struct arbre *arbre)
35   -{
36   - return arbre->finmot;
  40 +bool mot_existe(struct arbre *monarbre,char *mot,int i){
  41 + if (monarbre==NULL){
  42 +// printf("false\n");
  43 + return false;
  44 + }
  45 +// printf("%c \n",(monarbre->val));
  46 + if (mot[i+1]=='\0'){
  47 +// printf("finmot\n");
  48 + return monarbre->finmot;
  49 + }
  50 + else {
  51 + i++;
  52 + mot_existe(monarbre->suite[calculcase(mot[i])],mot,i);
  53 + }
37 54 }
38 55  
39 56 void ini_dico(struct dico *pt_dico)
... ... @@ -45,7 +62,7 @@ void ini_dico(struct dico *pt_dico)
45 62 }
46 63 void creation_arbre(Arbre **ppt_arbre,char c)
47 64 {
48   - printf("creation arbre\n");
  65 +// printf("creation arbre\n");
49 66 Arbre *monarbre=malloc(sizeof(struct arbre));
50 67 monarbre->val=c;
51 68 monarbre->finmot=false;
... ... @@ -59,15 +76,16 @@ void creation_arbre(Arbre **ppt_arbre,char c)
59 76 void ajout_mot(struct arbre **arbrecourant,char *mot,int i)
60 77 {
61 78  
62   - printf("%s:length:%zu \n",mot,strlen(mot));
  79 +// printf("%s:length:%zu \n",mot,strlen(mot));
63 80  
64 81 if(mot[i]!='\0'){
65   - printf("\nlettre:%c; i=%d\n",mot[i],i);
  82 +// printf("\nlettre:%c; i=%d\n",mot[i],i);
66 83 if (*arbrecourant==NULL){
67 84 creation_arbre(arbrecourant,mot[i]);
68 85 }
69 86 i++;
70   - if(mot[i]!='\0'){
  87 + if(mot[i+1]=='\0'){
  88 + printf("findemot\n");
71 89 (*arbrecourant)->finmot=true;
72 90 }
73 91 ajout_mot(&((*arbrecourant)->suite[calculcase(mot[i])]),mot,i);
... ... @@ -79,8 +97,8 @@ void charger_arbre(FILE *fp, struct dico **ppt_dico)
79 97 { char mot[20];
80 98 ini_dico(*ppt_dico);
81 99 while (fscanf(fp, "%s", mot)==1){
82   - printf("mot:%s\n\n\n",mot);
83   - printf("\nlettre:%c\n",mot[0]);
  100 +// printf("mot:%s\n\n\n",mot);
  101 +// printf("\nlettre:%c\n",mot[0]);
84 102 ajout_mot(&((*ppt_dico)->alpha[calculcase(mot[0])]),mot,0);
85 103 }
86 104 return ;
... ... @@ -137,16 +155,21 @@ void affiche_dico(struct dico *dico)
137 155 }
138 156  
139 157  
140   -// int main (){
141   -// FILE* fp = fopen("words-no-accents","r"); //amelioration entrée
142   -// if(fp == NULL){ return EXIT_FAILURE;} //File is not readable
143   -//
144   -// struct dico *mondico=malloc(sizeof(struct dico));
145   -// charger_arbre(fp,&mondico);
146   -// affiche_dico(mondico);
147   -//
148   -//
149   -// free_dico(mondico);
150   -// fclose(fp);
151   -// return 0;
152   -// }
  158 +int main (){
  159 + FILE* fp = fopen("words-no-accents","r"); //amelioration entrée
  160 + if(fp == NULL){ return EXIT_FAILURE;} //File is not readable
  161 +
  162 + struct dico *mondico=malloc(sizeof(struct dico));
  163 + charger_arbre(fp,&mondico);
  164 + affiche_dico(mondico);
  165 + char mot[]="zombie";
  166 + char mot2[]="zombbbiiee";
  167 +// mot_existe(mondico->alpha[calculcase(mot[0])],mot,0);
  168 +// mot_existe(mondico->alpha[calculcase(mot2[0])],mot2,0);
  169 +
  170 + printf("1:%d \n",mot_existe(mondico->alpha[calculcase(mot[0])],mot,0));
  171 + printf("3:%d \n",mot_existe(mondico->alpha[calculcase(mot2[0])],mot2,0));
  172 + free_dico(mondico);
  173 + fclose(fp);
  174 + return 0;
  175 + }
... ...