Commit f5270af0707f4e5f0830191d542a67bd487f152b

Authored by Emilie10
1 parent af1143d1

projet

Showing 1 changed file with 87 additions and 39 deletions   Show diff stats
1 1 #include <stdlib.h>
2 2 #include <stdio.h>
3 3 #include <string.h>
4   -#define size 50
5   -#define taille 26
  4 +#include <ctype.h>
  5 +#define size 128
6 6  
7   -struct noeud { char valeur; struct noeud * fils[28]; int complet;};
8   -struct dico {struct noeud* tableau[26];};
  7 +int alphabet[27] = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',39 };
  8 +
  9 +struct noeud { char valeur; struct noeud * fils[27]; int complet;};
  10 +struct dico {struct noeud* tableau[26];}; int i;
9 11 typedef struct noeud* Noeud;
10 12  
11 13  
12   -void cons_noeud (Noeud * pN, char a)
  14 +Noeud cons_noeud (char a)
13 15 {
14   - *pN = malloc(sizeof(struct noeud));
15   - (*pN)->valeur=a;
16   - (*pN)->complet=0;
  16 + Noeud pN = malloc(sizeof(struct noeud));
  17 + (*pN).valeur=a;
  18 + (*pN).complet=0;
17 19 for(int i=0; i<28; i++)
18 20 {
19   - (*pN)->fils[i]=NULL;
  21 + (*pN).fils[i]=NULL;
20 22 }
  23 + return pN;
21 24 }
22 25  
23 26 void ajout_noeud_dico(struct dico * D, Noeud N)
... ... @@ -28,79 +31,123 @@ void ajout_noeud_dico(struct dico * D, Noeud N)
28 31 D->tableau[i]=N;
29 32 }
30 33  
31   -void ajout_mot(Noeud * pN, char mot[size])
  34 +//tolower --> fonction qui prend une lettre quelconque en argument et renvoie son équivalent en miniscule
  35 +
  36 +/*void ajout_mot_noeud(Noeud * pN, char mot[size])
32 37 {
  38 + int j=0;
  39 + int n=strlen(mot);
33 40 if(*pN==NULL)
34 41 {
35   - cons_noeud(pN,mot[0]);
36   - sup_lettre(mot);
  42 + *pN=cons_noeud(tolower(mot[0]));
  43 + *pN=(*pN)->fils[j];
37 44 }
38   - else
39   -
40   -}
  45 + *pN=(*pN)->fils[j];
  46 + printf("%d\n",j);
  47 + for(int i=1; i<n; i++)
  48 + {
  49 + while((*pN)!=NULL && tolower((*pN)->valeur)!= tolower(mot[i]))
  50 + {j++;}
  51 + if(j==0)
  52 + {
  53 + *pN= (*pN)->fils[j+1];
  54 + }
  55 + else if (*pN == NULL)
  56 + {
  57 + *pN =cons_noeud(tolower(mot[i]));
  58 + *pN= (*pN)->fils[j];
  59 + }
  60 + }
  61 + (*pN)->complet=1;
  62 +}*/
41 63  
42   -char * sup_lettre(char mot[size])
  64 +void ajout_mot_noeud(Noeud * pN, char mot[size])
43 65 {
44   - for(int i=1; i<size; i++)
  66 + int i,n=strlen(mot);
  67 + if(& (*pN)->valeur==NULL)
  68 + *pN = cons_noeud(tolower(mot[0]));
  69 + for(i=1;i<n;i++)
45 70 {
46   - mot[i]= mot[i+1];
47   - }
48   - printf("%s\n",mot);
  71 + pN=&(*pN)->alphabet[tolower(mot[i])-'a'];
  72 + if(&(*pN)->valeur==NULL)
  73 + *pN= cons_noeud(tolower(mot[i]));
  74 + }
  75 + (*pN)->complet=1;
49 76 }
50 77  
51   -//Reprendre cette fonction!
  78 +//Reprendre cette fonction! ;
  79 +
52 80  
53 81 /*void cons_dico_file(FILE* fp, struct dico* D)
54 82 { char mot[size];
55 83 if(fp==NULL)
56 84 return;
57   - while(fscanf(fp,"%s",a)==1)
  85 + while(fscanf(fp,"%s",a)==1)*pN=NULL;
58 86 { ajout_mot(D,a);
59   - //D->dernier++;}
  87 + //D->dernier++;} //int i=O;
60 88  
61 89 }*/
62 90  
  91 +
63 92 /*int rech_mot(struct dico D,char mot [size])
64   -{
65   - Noeud N;
  93 +{ char * mot;
  94 + mot=sup_lettre("emilie");N)->fils[j]!=NULL || (*pN)->fils[j]->valeur!= mot[i+1]) //int i=O;
  95 + {j++;}
  96 + printf("%s\n",mot);
  97 + Noeud N; //int i=O;
66 98 int nbre;
67 99 for(int i=0;i<D.dernier;i++)
68 100 {
69 101 if(D.tableau[i].valeur==mot[0])
70   - {
  102 + { char * mot; //int i=O;
  103 + mot=sup_lettre("emilie");
  104 + printf("%s\n",mot);
71 105 N=D.tableau[i];
72 106 for(int j=0;j<size;j++)
73   - {
  107 + { //int i=O;
74 108 if(N.valeur==mot[j])
75 109 N=*(N.fils)->noeud;
76   - else
  110 + else //int i=O;
77 111 nbre=0;
78 112 }
79   - if(N.complet==1)return newmot
80   - nbre=1;
  113 + if(N.complet==1)return newmot //int i=O;
  114 + nbre=1;N)->fils[j]!=NULL || (*pN)->fils[j]->valeur!= mot[i+1]) //int i=O;
  115 + {j++;}
81 116 }
82   - else
  117 + else char * mot;
  118 + mot=sup_lettre("emilie"); //int i=O;
  119 + printf("%s\n",mot);
83 120 nbre= 0;
84 121 }
85   - return nbre;
  122 + return nbre; //int i=O;
86 123 }*/
87 124  
88 125  
89 126 /*void correction_texte(char filename[size], struct dico D)
90 127 {
91 128 FILE *fp=fopen(filename, "r");
92   - char mot[size];
93   - int x;
  129 + char mot[size]; //int i=O;
  130 + int x; char * mot;
  131 +}
  132 + mot=sup_lettre("emilie");
  133 + printf("%s\n",mot);
94 134 if(fp==NULL)return newmot
95 135 return;
96   - else
  136 + else //int i=O;
97 137 {
  138 + for(int i=1; i<size; i++)
  139 + {
  140 + mot[i]= newmot[i-1];
  141 + } //int i=O;
98 142 while(fscanf(fp,"%s",mot)==1)
99 143 {
100 144 x=rech_mot(D,mot);
101 145 if(x==0)
102 146 {
103   - printf("il y a une erreur!\n");
  147 + printf("il y a une err char * mot;N)->fils[j]!=NULL || (*pN)->fils[j]->valeur!= mot[i+1])
  148 + {j++;} //int i=O;
  149 + mot=sup_lettre("emilie");
  150 + printf("%s\n",mot);eur!\n");
104 151 printf("%s",mot);
105 152 }
106 153 }
... ... @@ -111,9 +158,10 @@ char * sup_lettre(char mot[size])
111 158  
112 159 int main()
113 160 {
114   - char* newmot;
115   - sup_lettre("emilie");
116   -
  161 + Noeud pN;
  162 + pN =cons_noeud('a');
  163 + ajout_mot_noeud(&pN,"arbre");
  164 + printf("%c\n", pN->valeur);
117 165 return 0;
118 166 }
119 167  
... ...