Commit 5a0b8312136f0046a39f44f02fbeab39cfc890cd
1 parent
7197538b
Algorithme amélioré de manière exceptionnelle le 28/03
Showing
1 changed file
with
30 additions
and
23 deletions
Show diff stats
correcteur.c
1 | 1 | #include <stdio.h> |
2 | 2 | #include <stdlib.h> |
3 | 3 | #include <stdbool.h> |
4 | +#include <string.h> | |
4 | 5 | |
5 | -#DEFINE MAX_LETTRES 30 | |
6 | +#define MAX_LETTRES 30 | |
6 | 7 | |
7 | 8 | |
8 | 9 | typedef struct node { |
10 | + char l; | |
9 | 11 | struct node * lettres[27]; |
10 | 12 | bool fin_de_mot; |
11 | 13 | int dernier; |
12 | 14 | } Node; |
13 | 15 | |
14 | 16 | |
15 | -void ajout_tete(Node **N, char * mot) | |
17 | +void ajout(Node **N, char mot) | |
16 | 18 | { |
17 | - Cellule *nouveau = malloc(sizeof(struct node)); | |
18 | - strcpy(nouveau->(*N)->dernier, mot); | |
19 | - nouveau->suivant = *N; | |
19 | + Node *nouveau = malloc(sizeof(struct node)); | |
20 | + (*nouveau).l=mot; | |
21 | + for (int i=0; i<27; i++) nouveau->lettres[i]=NULL; | |
20 | 22 | *N = nouveau; |
21 | 23 | } |
22 | 24 | |
23 | 25 | |
24 | -void ajout_alphab(Node ** pn, char * mot) | |
26 | +void ajout_alphab(Node ** pn, char * mot,int cpt) | |
25 | 27 | { |
26 | - if (*pn == NULL) | |
27 | - { | |
28 | - ajout_tete(pn,mot); | |
29 | - } | |
30 | - else | |
31 | - { | |
32 | - if (strcmp(mot, (*pn)->valeur) != 0) | |
33 | - { | |
34 | - ajout_alphab(pn[((*pn)->dernier)+1],mot); | |
35 | - (*pn)->dernier ++; | |
36 | - } | |
28 | + int i = 0; | |
29 | + while (mot[cpt] != '\0'){ | |
30 | + while ((*pn)->lettres[i] != NULL){ | |
31 | + if (strcmp(&(*pn)->l,mot) != 0){ | |
32 | + i++; | |
33 | + } | |
34 | + *pn=(*pn)->lettres[i]; | |
35 | + return ajout_alphab(pn,mot,cpt++); | |
37 | 36 | } |
37 | + ajout(&(*pn)->lettres[i],mot[cpt]); | |
38 | + *pn=(*pn)->lettres[i]; | |
39 | + cpt++; | |
40 | + } | |
38 | 41 | } |
39 | 42 | |
40 | 43 | |
41 | -Node * charger_arbre(){ | |
42 | - File * dico; | |
44 | +Node * charger_arbre(Node ** Arbre){ | |
45 | + FILE * dico; | |
43 | 46 | char mot[MAX_LETTRES]; |
44 | - *dico = fopen("words.txt",'r'); | |
47 | + dico = fopen("words.txt","r"); | |
45 | 48 | while (fscanf(dico,"%s",mot) == 1){ |
46 | - ajout_alphab(Arbre,mot); | |
49 | + ajout_alphab(Arbre,mot,0); | |
47 | 50 | } |
48 | - fclose(); | |
49 | - return Arbre; | |
51 | + fclose(dico); | |
52 | + return *Arbre; | |
50 | 53 | } |
51 | 54 | |
55 | + | |
56 | +int main(){ | |
57 | + return 0; | |
58 | +} | ... | ... |