7d87f7e2
grouille
Makefile + complè...
|
1
2
3
4
5
6
7
8
9
10
|
// --------------------------------------------------------
// Projet IMA3 2019 - Lecture d'une bibliothèque
// Décompte du nombre de fautes d'orthographe dans un texte
// Normand Quentin & Rouillé Guillaume
// --------------------------------------------------------
// Initialisation des variables et inclusion des bibliothèques
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
|
0e62ceb1
grouille
Code propre
|
11
|
#include <string.h>
|
1e4b8b9c
grouille
Code complet comm...
|
12
13
|
// Définition des constantes
|
7d87f7e2
grouille
Makefile + complè...
|
14
|
#define MAX 30 // taille maximale d'une chaîne lue dans un fichier
|
1e4b8b9c
grouille
Code complet comm...
|
15
|
#define NB_CARAC 27 // nombre de caractères différents pouvant être identifiés
|
ffa95c23
grouille
Version finale sa...
|
16
|
#define NB_MOT_CORRECTION 15 // nombre de mots pour la correction
|
1e4b8b9c
grouille
Code complet comm...
|
17
|
#define MAX_READ 1000 // nombre de caractères maximums dans une ligne lue lors de la connexion
|
7d87f7e2
grouille
Makefile + complè...
|
18
19
20
21
22
23
24
25
26
27
|
// Déclaration de la structure 'trie' ou 'arbre indexé', ainsi que des pointeurs associés
typedef struct node* Node;
typedef struct node {
char letter;
Node next[NB_CARAC];
bool endWord;
}node;
|
1e4b8b9c
grouille
Code complet comm...
|
28
|
// Déclaration de la liste contigüe contenant les mots possible pour la correction
|
ffa95c23
grouille
Version finale sa...
|
29
30
31
32
33
34
35
|
typedef struct liste* correction;
typedef struct liste {
char mots[NB_MOT_CORRECTION][MAX];
int dernier;
}liste;
|
7d87f7e2
grouille
Makefile + complè...
|
36
|
// Fonction permettant de savoir si la structure est vide
|
ffa95c23
grouille
Version finale sa...
|
37
|
bool is_empty_tree(Node);
|
7d87f7e2
grouille
Makefile + complè...
|
38
39
|
// Fonction permettant de savoir si le tableau 'next' est un tableau de pointeurs NULL
|
ffa95c23
grouille
Version finale sa...
|
40
|
bool is_leaf(Node);
|
7d87f7e2
grouille
Makefile + complè...
|
41
42
|
// Initialisation de la structure accueillant le dictionnaire
|
ffa95c23
grouille
Version finale sa...
|
43
|
void init_tree(Node*);
|
7d87f7e2
grouille
Makefile + complè...
|
44
45
|
// Détermine l'indice de rangement dans le tableau 'next' du caractère 'letter'
|
ffa95c23
grouille
Version finale sa...
|
46
|
int find_caract_indice(char); // Ne fonctionne pas pour les caractères accentués
|
7d87f7e2
grouille
Makefile + complè...
|
47
48
|
// Fonction d'ajout d'un mot 'word' dans la structure 'tree' de type 'arbre indexé'
|
ffa95c23
grouille
Version finale sa...
|
49
|
void add_in_tree(Node, char*);
|
7d87f7e2
grouille
Makefile + complè...
|
50
51
|
// Fonction qui détermine si le caractère est un caractère de fin de mot (espace, ',', ';', '.', etc..)
|
ffa95c23
grouille
Version finale sa...
|
52
|
bool is_end_caract(char);
|
7d87f7e2
grouille
Makefile + complè...
|
53
54
|
// Renvoi l'indice maximum du mot 'word'
|
ffa95c23
grouille
Version finale sa...
|
55
|
char max_index(char*);
|
7d87f7e2
grouille
Makefile + complè...
|
56
57
|
// Détermine si le mot 'word' est présent dans l'arbre indexé
|
ffa95c23
grouille
Version finale sa...
|
58
|
void scan_word(Node, char*, int*, FILE*, int*);
|
7d87f7e2
grouille
Makefile + complè...
|
59
60
|
// Retourne 'true' si le mot 'word' est non accentué, 'false' sinon
|
ffa95c23
grouille
Version finale sa...
|
61
|
bool no_accent(char*);
|
7d87f7e2
grouille
Makefile + complè...
|
62
63
|
// Transmet les mots du texte à analyser à 'scan_word'
|
ffa95c23
grouille
Version finale sa...
|
64
|
void read_txt(FILE*, Node*, int*, int*);
|
7d87f7e2
grouille
Makefile + complè...
|
65
66
|
// Transmet les mots de la biliothèque à 'add_in_tree'
|
ffa95c23
grouille
Version finale sa...
|
67
|
void read_lib(FILE*, Node*);
|
7d87f7e2
grouille
Makefile + complè...
|
68
|
|
ffa95c23
grouille
Version finale sa...
|
69
70
|
// Affiche l'arbre indexé
void print_tree(Node, int, char*);
|
7d87f7e2
grouille
Makefile + complè...
|
71
72
|
// Libère l'espace mémoire associé à l'arbre indexé
|
ffa95c23
grouille
Version finale sa...
|
73
|
void free_tree(Node*);
|
7d87f7e2
grouille
Makefile + complè...
|
74
|
|
0e62ceb1
grouille
Code propre
|
75
|
// Ajoute une erreur
|
ffa95c23
grouille
Version finale sa...
|
76
|
void add_error(int*, char*, int, Node, FILE*, int*);
|
0e62ceb1
grouille
Code propre
|
77
78
|
// Corrige les erreurs
|
ffa95c23
grouille
Version finale sa...
|
79
|
void make_correction(char *, int, Node, FILE*, int*);
|
0e62ceb1
grouille
Code propre
|
80
|
|
1e4b8b9c
grouille
Code complet comm...
|
81
|
// Initialise le programme (affichage)
|
0e62ceb1
grouille
Code propre
|
82
|
void init_pgrm(void);
|
ffa95c23
grouille
Version finale sa...
|
83
84
85
86
87
88
89
|
// Ajoute un caractère à une chaine de caractères
void add_caract(char*, char);
// Supprime le dernier caractère d'une chaine
void supp_caract(char*);
|
1e4b8b9c
grouille
Code complet comm...
|
90
|
// Initialise la liste contigüe contenant les mots de correction
|
ffa95c23
grouille
Version finale sa...
|
91
92
|
void init_correction(correction*);
|
1e4b8b9c
grouille
Code complet comm...
|
93
|
// Récupère les mots possibles pour la correction
|
ffa95c23
grouille
Version finale sa...
|
94
95
96
97
98
99
100
101
102
103
104
105
106
|
void make_tree_correct(Node, int, char*, char*, correction);
// Ajoute un mot dans une liste contigûe
void add_in_liste(correction, char*, char*);
// Choix du mot corrigé
void choice_word(correction, FILE*, char, int, int*, bool);
// Détecte les caractères spéciaux
bool detect_end_caract(char*, char*);
// Corrige le mot
void correct_word(char*, FILE*, int);
|