Commit 6d4badb45fa738e1804eb977801945efc5d78db1

Authored by tvieuble
1 parent 352cf5c6

Suppression fichiers inutiles

Showing 1 changed file with 0 additions and 369 deletions   Show diff stats
projetfinalwchar_t2.c deleted
... ... @@ -1,369 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -#include <stddef.h>
4   -#include <locale.h>
5   -
6   -#define A 26
7   -#define B 137
8   -
9   -struct node {
10   - wchar_t lettre;
11   - struct cell* listeFils;
12   -};
13   -
14   -struct cell {
15   - struct node* arbre;
16   - struct cell* arbreSuivant;
17   -};
18   -
19   -void lien_listeFils(struct cell** pL) {
20   - struct cell* p;
21   - p = malloc(sizeof(struct cell));
22   -
23   - (*pL)->arbre->listeFils = p;
24   -}
25   -
26   -void initialisation_tab_arbre(struct node tab[]) {
27   - for(int i = 0; i < A; i++) {
28   - tab[i].lettre = 97+i; //ajout lettres minuscules
29   - tab[i].listeFils = NULL;
30   - }
31   - tab[A].lettre = 39;
32   - tab[A].listeFils = NULL;
33   - for(int i = 0; i < B-(A+1); i++) {
34   - tab[(A+1)+i].lettre = 128+i; //ajout carractère spéciaux
35   - tab[(A+1)+i].listeFils = NULL;
36   - }
37   -
38   -}
39   -
40   -void ajout_tete(wchar_t elem, struct cell** pL) {
41   - struct cell* p;
42   - p = malloc(sizeof(struct cell));
43   - p->arbre = malloc(sizeof(struct node));
44   - p->arbre->listeFils = NULL;
45   - p->arbre->lettre = elem;
46   - p->arbreSuivant = *pL;
47   - *pL = p;
48   -}
49   -
50   -struct cell ** insertion(wchar_t elem, struct cell** pL) {
51   - if(((*pL) == NULL) || ((*pL)->arbre->lettre > elem)) {
52   - ajout_tete(elem, pL);
53   - return &(*pL)->arbre->listeFils;
54   - }
55   - else if((*pL)->arbre->lettre == elem) {
56   - return &(*pL)->arbre->listeFils;
57   - }
58   - else {
59   - return insertion(elem, &(*pL)->arbreSuivant);
60   - }
61   -}
62   -
63   -wchar_t conversion_accent(wchar_t lettre) { // Conversion Unicode -> ASCII 256
64   - switch(lettre) {
65   - case 192 : //À
66   - lettre = 182;
67   - break;
68   - case 193 : //Á
69   - lettre = 181;
70   - break;
71   - case 194 : //Â
72   - lettre = 182;
73   - break;
74   - case 198 : //Æ
75   - lettre = 146;
76   - break;
77   - case 199 : //Ç
78   - lettre = 128;
79   - break;
80   - case 200 : //È
81   - lettre = 212;
82   - break;
83   - case 201 : //É
84   - lettre = 144;
85   - break;
86   - case 202 : //Ê
87   - lettre = 210;
88   - break;
89   - case 203 : //Ë
90   - lettre = 211;
91   - break;
92   - case 204 : //Ì
93   - lettre = 141;
94   - break;
95   - case 205 : //Í
96   - lettre = 214;
97   - break;
98   - case 206 : //Î
99   - lettre = 215;
100   - break;
101   - case 207 : //Ï
102   - lettre = 216;
103   - break;
104   - case 209 : //Ñ
105   - lettre = 165;
106   - break;
107   - case 210 : //Ò
108   - lettre = 227;
109   - break;
110   - case 211 : //Ó
111   - lettre = 224;
112   - break;
113   - case 212 : //Ô
114   - lettre = 226;
115   - break;
116   - /* case 140 : //Œ
117   - lettre =
118   - break;*/
119   - case 217 : //Ù
120   - lettre = 235;
121   - break;
122   - case 218 : //Ú
123   - lettre = 233;
124   - break;
125   - case 219 : //Û
126   - lettre = 234;
127   - break;
128   - case 220 : //Ü
129   - lettre = 154;
130   - break;
131   - case 221 : //Ý
132   - lettre = 237;
133   - break;
134   - /*case 159 : //Ÿ
135   - lettre =
136   - break;*/
137   - case 224 : //à
138   - lettre = 233;
139   - break;
140   - case 225 : //á
141   - lettre = 160;
142   - break;
143   - case 226 : //â
144   - lettre = 131;
145   - break;
146   - case 230 : //æ
147   - lettre = 145;
148   - break;
149   - case 231 : //ç
150   - lettre = 135;
151   - break;
152   - case 232 : //è
153   - lettre = 138;
154   - break;
155   - case 233 : //é
156   - lettre = 130;
157   - break;
158   - case 234 : //ê
159   - lettre = 136;
160   - break;
161   - case 235 : //ë
162   - lettre = 137;
163   - break;
164   - case 236 : //ì
165   - lettre = 141;
166   - break;
167   - case 237 : //í
168   - lettre = 161;
169   - break;
170   - case 238 : //î
171   - lettre = 140;
172   - break;
173   - case 239 : //ï
174   - lettre = 139;
175   - break;
176   - case 241 : //ñ
177   - lettre = 164;
178   - break;
179   - case 242 : //ò
180   - lettre = 149;
181   - break;
182   - case 243 : //ó
183   - lettre = 162;
184   - break;
185   - case 244 : //ô
186   - lettre = 147;
187   - break;
188   - /*case 156 : //œ
189   - lettre =
190   - break;*/
191   - case 249 : //ù
192   - lettre = 151;
193   - break;
194   - case 250 : //ú
195   - lettre = 163;
196   - break;
197   - case 251 : //û
198   - lettre = 150;
199   - break;
200   - /*case 252 : //ü
201   - lettre =
202   - break;*/
203   - case 253 : //ý
204   - lettre = 263;
205   - break;
206   - case 255 : //ÿ
207   - lettre = 152;
208   - break;
209   - default :
210   - break;
211   - }
212   - return lettre;
213   -}
214   -
215   -int indice_lettre(struct node tab_arbre_prcp[], wchar_t lettre)
216   -{
217   - int i= A+1;
218   - while(i>A && i<B){
219   - if(lettre == tab_arbre_prcp[i].lettre ){
220   - return i;
221   - }
222   - i++;
223   - }
224   -return 0;
225   -}
226   -
227   -void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) {
228   -
229   - struct cell** localisationArbre = NULL;
230   - int cptmot = 0;
231   - wchar_t motLu[50];
232   - while(fwscanf(fd, L"%ls", motLu)==1) {
233   - wprintf(L"mot lu : %ls\n", motLu);
234   - int wchar_tEstUneLettre = 1;
235   - int i = 0;
236   - cptmot += 1;
237   - if((motLu[0] >= 'A') && (motLu[0] <= 'Z')) {
238   - localisationArbre = &tab_arbre_prcp[motLu[0]-65].listeFils;
239   - }
240   - else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
241   - localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
242   - }
243   - else if((motLu[0] >= 128) && (motLu[0] <= 237)) {
244   - motLu[0] = conversion_accent(motLu[0]);
245   - wprintf(L" 1er lettre lue apres convversion : %ld\n", motLu[0]);
246   - localisationArbre = &tab_arbre_prcp[indice_lettre(tab_arbre_prcp, motLu[0])].listeFils;
247   -
248   - }
249   - else {
250   - wprintf(L"Erreur remplissage dico : L'un des caracteres n'est pas une lettre\n");
251   - wprintf(L"Mot : %ls incorrect\n", motLu);
252   - wchar_tEstUneLettre = 0;
253   - }
254   - while((motLu[i] != '\0') && (wchar_tEstUneLettre == 1)) {
255   - i += 1;
256   - wprintf(L"lettre lue %ld\n", motLu[i]);
257   - if(motLu[i] > 127) {
258   - motLu[i] = conversion_accent(motLu[i]);
259   - wprintf(L"lettre lue apres convversion : %ld\n", motLu[i]);
260   - }
261   - localisationArbre = insertion(motLu[i], localisationArbre);
262   - }
263   - wprintf(L"mot lu 2: %ls\n", motLu);
264   - }
265   - wprintf(L"\n");
266   - fclose(fd);
267   - wprintf(L"%d mots inseres dans le dictionnaire.\n", cptmot);
268   -}
269   -
270   -struct cell** test_mot(wchar_t mot, struct cell** localisation, int* verif) {
271   -
272   - if((*localisation == NULL) || (*localisation)->arbre->lettre > mot) {
273   - *verif = 0;
274   - return NULL;
275   - }
276   - if((*localisation)->arbre->lettre == mot) {
277   - return &(*localisation)->arbre->listeFils;
278   - }
279   - else {
280   - return test_mot(mot, &(*localisation)->arbreSuivant, verif);
281   - }
282   -}
283   -
284   -void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) {
285   - struct cell** localisationArbre = NULL;
286   - int verif;
287   - wchar_t motLu[50];
288   - while(fwscanf(fd, L"%ls", motLu)==1) {
289   - wprintf(L"mot lu : %ls\n", motLu);
290   - verif = 1;
291   - int i = 0;
292   - if((motLu[0] >= 'A') && (motLu[0] <= 'Z')) {
293   - localisationArbre = &tab_arbre_prcp[motLu[0]-65].listeFils;
294   - }
295   - else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
296   - localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
297   - }
298   - else {
299   - wprintf(L"Erreur correction txt : L'un des caracteres n'est pas une lettre\n");
300   - verif = 0;
301   - }
302   - while((verif == 1) && (motLu[i] != '\0')) {
303   - i += 1;
304   - if(motLu[i] > 127) {motLu[i] = conversion_accent(motLu[i]);
305   - wprintf(L"mot lu 2 : %ls\n", motLu);}
306   - localisationArbre = test_mot(motLu[i], localisationArbre, &verif);
307   - wprintf(L"lettre lue %ld\n", motLu[i]);
308   - }
309   - wprintf(L"\n");
310   - if(verif == 0) wprintf(L"Mot %ls non present dans le dicitonnaire.\n", motLu);
311   -
312   - }
313   - fclose(fd);
314   -}
315   -
316   -void correction_mot(struct node tab_arbre_prcp[]) {
317   - struct cell** localisationArbre = NULL;
318   - int verif;
319   - wchar_t motLu[50];
320   - wprintf(L"Entrez un mot ou une phrase a corriger : \n(0 pour quitter)\n");
321   - while(wscanf(L"%ls", motLu)==1) {
322   - if(motLu[0]=='0') return;
323   - verif = 1;
324   - int i = 0;
325   - if((motLu[0] >= 'A') && (motLu[0] <= 'Z')) {
326   - localisationArbre = &tab_arbre_prcp[motLu[0]-65].listeFils;
327   - }
328   - else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
329   - localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
330   - }
331   - else {
332   - wprintf(L"Erreur correction mot : L'un des caract%lcres n'est pas une lettre\n", 130);
333   - verif = 0;
334   - }
335   - while((verif == 1) && (motLu[i] != '\0')) {
336   - i += 1;
337   - wprintf(L"lettre lue %ld\n", motLu[i]);
338   - localisationArbre = test_mot(motLu[i], localisationArbre, &verif);
339   - }
340   - if(verif == 0) wprintf(L"Mot : %ls non present dans le dicitonnaire.\n", motLu);
341   - else wprintf(L"Mot : %ls correct\n", motLu);
342   - }
343   -}
344   -
345   -
346   -int main(int argc, char* argv[]) {
347   - FILE* dico = NULL;
348   - FILE* txt = NULL;
349   - struct node tab_arbre[B];
350   -
351   - if(argc>2) {
352   - dico = fopen(argv[1], "r");
353   - txt = fopen(argv[2], "r");
354   - }
355   - else {
356   - dico = NULL;
357   - txt = NULL;
358   - }
359   - if ((dico == NULL) || (txt == NULL)) {
360   - wprintf(L"Erreur : il manque un ou plusieurs fichiers !\n");
361   - return 1;
362   - }
363   - initialisation_tab_arbre(tab_arbre);
364   - remplir_dico(dico, tab_arbre); //on suppose qu'il n'y a pas d'accents dans le dictionnaire
365   - correction_txt(txt, tab_arbre);
366   - correction_mot(tab_arbre);
367   -
368   - return 0;
369   -}