Commit 3b61598efc032cd889dcd72a2a1527a251766dc9

Authored by pvernier
2 parents 6d231301 ee3fc0eb

Merge branch 'master' of https://archives.plil.fr/pvernier/ima3_projet_pa_2019

dicoesp.txt 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +México o Méjico es un país en América del Norte América del Norte es un continente México está al sur de los Estados Unidos y al norte de Guatemala y de Belice Al este de México hay el golfo de México y al oeste hay el océano Pacífico
  2 +niño
  3 +Los habitantes de México se llaman Mexicanos o Mejicanos Hay 107 000 000 de habitantes en el país La capital es México o México Distrito Federal La capital es una gran ciudad Hay de habitantes en la capital Es una de las ciudades más grandes del mundo
0 \ No newline at end of file 4 \ No newline at end of file
projetfinalaccent2.c
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 #include <wchar.h> 3 #include <wchar.h>
4 #include <locale.h> 4 #include <locale.h>
5 5
6 -#define A 256 6 +#define A 259
7 7
8 struct node { 8 struct node {
9 wchar_t lettre; 9 wchar_t lettre;
@@ -15,20 +15,19 @@ struct cell { @@ -15,20 +15,19 @@ struct cell {
15 struct cell* arbreSuivant; 15 struct cell* arbreSuivant;
16 }; 16 };
17 17
18 -void lien_listeFils(struct cell** pL) {  
19 - struct cell* p;  
20 - p = malloc(sizeof(struct cell));  
21 -  
22 - (*pL)->arbre->listeFils = p;  
23 -}  
24 -  
25 void initialisation_tab_arbre(struct node tab[]) { 18 void initialisation_tab_arbre(struct node tab[]) {
26 int i = 0; 19 int i = 0;
27 - for(wchar_t u = 'a'; u < A; u++) { 20 + for(wchar_t u = 'a'; u < A-3; u++) {
28 tab[i].lettre = u; //ajout lettres minuscules 21 tab[i].lettre = u; //ajout lettres minuscules
29 tab[i].listeFils = NULL; 22 tab[i].listeFils = NULL;
30 i++; 23 i++;
31 } 24 }
  25 + tab[A-3].lettre = '?';
  26 + tab[A-2].lettre = '!';
  27 + tab[A-1].lettre = '\'';
  28 + tab[A-3].listeFils = NULL;
  29 + tab[A-2].listeFils = NULL;
  30 + tab[A-1].listeFils = NULL;
32 } 31 }
33 32
34 void ajout_tete(wchar_t elem, struct cell** pL) { 33 void ajout_tete(wchar_t elem, struct cell** pL) {
@@ -82,7 +81,7 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) { @@ -82,7 +81,7 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) {
82 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) { 81 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
83 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils; 82 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
84 } 83 }
85 - else if(motLu[0] > 'z') { 84 + else if((motLu[0] < 'A') || (motLu[0] > 'z')) {
86 indice = indice_lettre(tab_arbre_prcp, motLu[0]); 85 indice = indice_lettre(tab_arbre_prcp, motLu[0]);
87 localisationArbre = &tab_arbre_prcp[indice].listeFils; 86 localisationArbre = &tab_arbre_prcp[indice].listeFils;
88 if(indice == 0) { 87 if(indice == 0) {
@@ -98,7 +97,6 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) { @@ -98,7 +97,6 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) {
98 } 97 }
99 while((motLu[i] != '\0') && (estUneLettre == 1)) { 98 while((motLu[i] != '\0') && (estUneLettre == 1)) {
100 i += 1; 99 i += 1;
101 - //wprintf(L"lettre lue %d\n", motLu[i]);  
102 localisationArbre = insertion(motLu[i], localisationArbre); 100 localisationArbre = insertion(motLu[i], localisationArbre);
103 } 101 }
104 } 102 }
@@ -107,7 +105,7 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) { @@ -107,7 +105,7 @@ void remplir_dico(FILE* fd, struct node tab_arbre_prcp[]) {
107 wprintf(L"%d mots inseres dans le dictionnaire.\n", cptmot); 105 wprintf(L"%d mots inseres dans le dictionnaire.\n", cptmot);
108 } 106 }
109 107
110 -struct cell** test_mot(wchar_t mot, struct cell** localisation, int* verif) { 108 +struct cell ** test_mot(wchar_t mot, struct cell** localisation, int* verif) {
111 109
112 if((*localisation == NULL) || (*localisation)->arbre->lettre > mot) { 110 if((*localisation == NULL) || (*localisation)->arbre->lettre > mot) {
113 *verif = 0; 111 *verif = 0;
@@ -124,7 +122,7 @@ struct cell** test_mot(wchar_t mot, struct cell** localisation, int* verif) { @@ -124,7 +122,7 @@ struct cell** test_mot(wchar_t mot, struct cell** localisation, int* verif) {
124 void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) { 122 void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) {
125 struct cell** localisationArbre = NULL; 123 struct cell** localisationArbre = NULL;
126 int verif; 124 int verif;
127 - int indice = 0; 125 + int indice = 0, cptfaute = 0;
128 wchar_t motLu[50]; 126 wchar_t motLu[50];
129 while(fwscanf(fd, L"%ls", motLu)==1) { 127 while(fwscanf(fd, L"%ls", motLu)==1) {
130 verif = 1; 128 verif = 1;
@@ -135,11 +133,12 @@ void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) { @@ -135,11 +133,12 @@ void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) {
135 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) { 133 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
136 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils; 134 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
137 } 135 }
138 - else if(motLu[0] > 'z') { 136 + else if((motLu[0] < 'A') || (motLu[0] > 'z')) {
  137 + printf("jsuisla\n");
139 indice = indice_lettre(tab_arbre_prcp, motLu[0]); 138 indice = indice_lettre(tab_arbre_prcp, motLu[0]);
140 localisationArbre = &tab_arbre_prcp[indice].listeFils; 139 localisationArbre = &tab_arbre_prcp[indice].listeFils;
141 if(indice == 0) { 140 if(indice == 0) {
142 - wprintf(L"Erreur correction txt : L'un des caracteres n'est pas une lettre\n"); 141 + wprintf(L"Erreur correction txt : L'un des caracteres n'est pas une lettre\n");
143 verif = 0; 142 verif = 0;
144 } 143 }
145 } 144 }
@@ -149,10 +148,15 @@ void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) { @@ -149,10 +148,15 @@ void correction_txt(FILE* fd, struct node tab_arbre_prcp[]) {
149 } 148 }
150 while((verif == 1) && (motLu[i] != '\0')) { 149 while((verif == 1) && (motLu[i] != '\0')) {
151 i += 1; 150 i += 1;
  151 + if((motLu[i] == '.') || (motLu[i] == ',') || (motLu[i] == ';') || (motLu[i] == ':') || (motLu[i] == '!') || (motLu[i] == '?')) motLu[i] = '\0'; //prendre en compte les fins de phrase
152 localisationArbre = test_mot(motLu[i], localisationArbre, &verif); 152 localisationArbre = test_mot(motLu[i], localisationArbre, &verif);
153 } 153 }
154 - if(verif == 0) wprintf(L"Mot %ls non present dans le dicitonnaire.\n", motLu); 154 + if(verif == 0) {
  155 + wprintf(L"Mot %ls non present dans le dicitonnaire.\n", motLu);
  156 + cptfaute += 1;
  157 + }
155 } 158 }
  159 + printf("Le texte comporte %d faute(s)\n", cptfaute);
156 fclose(fd); 160 fclose(fd);
157 } 161 }
158 162
@@ -172,7 +176,7 @@ void correction_mot(struct node tab_arbre_prcp[]) { @@ -172,7 +176,7 @@ void correction_mot(struct node tab_arbre_prcp[]) {
172 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) { 176 else if((motLu[0] >= 'a') && (motLu[0] <= 'z')) {
173 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils; 177 localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils;
174 } 178 }
175 - else if(motLu[0] > 'z') { 179 + else if((motLu[0] < 'A') || (motLu[0] > 'z')) {
176 indice = indice_lettre(tab_arbre_prcp, motLu[0]); 180 indice = indice_lettre(tab_arbre_prcp, motLu[0]);
177 localisationArbre = &tab_arbre_prcp[indice].listeFils; 181 localisationArbre = &tab_arbre_prcp[indice].listeFils;
178 if(indice == 0) { 182 if(indice == 0) {
@@ -186,28 +190,23 @@ void correction_mot(struct node tab_arbre_prcp[]) { @@ -186,28 +190,23 @@ void correction_mot(struct node tab_arbre_prcp[]) {
186 } 190 }
187 while((verif == 1) && (motLu[i] != '\0')) { 191 while((verif == 1) && (motLu[i] != '\0')) {
188 i += 1; 192 i += 1;
  193 + if((motLu[i] == '.') || (motLu[i] == ',') || (motLu[i] == ';') || (motLu[i] == ':') || (motLu[i] == '!') || (motLu[i] == '?')) motLu[i] = '\0';
189 wprintf(L"lettre lue %d\n", motLu[i]); 194 wprintf(L"lettre lue %d\n", motLu[i]);
190 localisationArbre = test_mot(motLu[i], localisationArbre, &verif); 195 localisationArbre = test_mot(motLu[i], localisationArbre, &verif);
191 } 196 }
192 - if(verif == 0) wprintf(L"Mot : %ls non present dans le dicitonnaire.\n", motLu); 197 + if(verif == 0) {
  198 + wprintf(L"Mot : %ls non present dans le dicitonnaire.\n", motLu);
  199 + }
193 else wprintf(L"Mot : %ls correct\n", motLu); 200 else wprintf(L"Mot : %ls correct\n", motLu);
194 } 201 }
195 } 202 }
196 203
197 -/*void supp_tete(struct cell** pL) {  
198 - struct cell* p;  
199 - p = *pL;  
200 - *pL = (*pL) -> arbreSuivant;  
201 - free(p);  
202 -}*/  
203 -  
204 void desalocationArbre(struct cell** pL) { 204 void desalocationArbre(struct cell** pL) {
205 205
206 if ((*pL) == NULL) return; 206 if ((*pL) == NULL) return;
207 207
208 desalocationArbre(&(*pL)-> arbreSuivant); 208 desalocationArbre(&(*pL)-> arbreSuivant);
209 desalocationArbre(&(*pL)-> arbre -> listeFils); 209 desalocationArbre(&(*pL)-> arbre -> listeFils);
210 -  
211 free((*pL) -> arbre); 210 free((*pL) -> arbre);
212 free(*pL); 211 free(*pL);
213 } 212 }
@@ -215,9 +214,7 @@ void desalocationArbre(struct cell** pL) { @@ -215,9 +214,7 @@ void desalocationArbre(struct cell** pL) {
215 void desalocationTableauArbre(struct node tab_arbre[]){ 214 void desalocationTableauArbre(struct node tab_arbre[]){
216 int i = 0; 215 int i = 0;
217 for(wchar_t u = 'a'; u < A; u++) { 216 for(wchar_t u = 'a'; u < A; u++) {
218 -  
219 - desalocationArbre(&tab_arbre[i].listeFils);  
220 - 217 + desalocationArbre(&tab_arbre[i].listeFils);
221 i++; 218 i++;
222 } 219 }
223 } 220 }
@@ -229,7 +226,6 @@ int main(int argc, char* argv[]) { @@ -229,7 +226,6 @@ int main(int argc, char* argv[]) {
229 FILE* dico = NULL; 226 FILE* dico = NULL;
230 FILE* txt = NULL; 227 FILE* txt = NULL;
231 struct node tab_arbre[A]; 228 struct node tab_arbre[A];
232 - //struct node * a;  
233 229
234 if(argc>2) { 230 if(argc>2) {
235 dico = fopen(argv[1], "r"); 231 dico = fopen(argv[1], "r");
@@ -245,6 +241,7 @@ int main(int argc, char* argv[]) { @@ -245,6 +241,7 @@ int main(int argc, char* argv[]) {
245 } 241 }
246 initialisation_tab_arbre(tab_arbre); 242 initialisation_tab_arbre(tab_arbre);
247 remplir_dico(dico, tab_arbre); //on suppose qu'il n'y a pas d'accents dans le dictionnaire 243 remplir_dico(dico, tab_arbre); //on suppose qu'il n'y a pas d'accents dans le dictionnaire
  244 + for(int i = 0; i < A; i++) wprintf(L"%lc\n", tab_arbre[i].lettre);
248 correction_txt(txt, tab_arbre); 245 correction_txt(txt, tab_arbre);
249 correction_mot(tab_arbre); 246 correction_mot(tab_arbre);
250 desalocationTableauArbre(tab_arbre); 247 desalocationTableauArbre(tab_arbre);
projetfinalaccent2.exe 0 → 100644
No preview for this file type
1 -paul  
2 -arbre Tanguy  
3 -feuilles  
4 -vapeur  
5 -abricots  
6 -abricot  
7 -agen  
8 -feuil 1 +He mustn't drink.
  2 +Three man went into a pub. They were all drunk and two of them were carring the third beetwen them. When they was inside they dropped him on the flor. Then they went in the bar.
  3 +They said to the barman, two whiskies, please.
  4 +The barman said, what about your frend ? Doesn't he wants an whisky?
  5 +Oh, no, they said,he mustn't drink. He's diving.
9 \ No newline at end of file 6 \ No newline at end of file
1 -A 1 +A
2 A's 2 A's
3 AA's 3 AA's
4 AB's 4 AB's