Commit 738fef436d041014b65c151500523b26d3be4bfe

Authored by Emilie10
1 parent f5270af0

projet

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