Blame view

tree.h 3.28 KB
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>

7d87f7e2   grouille   Makefile + complè...
12
13
  #define MAX 30 // taille maximale d'une chaîne lue dans un fichier

  #define NB_CARAC 27 // nombre de caractères différents pouvant être identifiés -> 89 avec accentués

ffa95c23   grouille   Version finale sa...
14
15
  #define NB_MOT_CORRECTION 15 // nombre de mots pour la correction

  #define MAX_READ 1000

7d87f7e2   grouille   Makefile + complè...
16
17
18
19
20
21
22
23
24
25
  

  // 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;

  

ffa95c23   grouille   Version finale sa...
26
27
28
29
30
31
32
33
  // Déclaration de la structure contenant les mots possible pour la correction

  typedef struct liste* correction;

  

  typedef struct liste {

  	char mots[NB_MOT_CORRECTION][MAX];

  	int dernier;

  }liste;

  

7d87f7e2   grouille   Makefile + complè...
34
  // Fonction permettant de savoir si la structure est vide

ffa95c23   grouille   Version finale sa...
35
  bool is_empty_tree(Node);

7d87f7e2   grouille   Makefile + complè...
36
37
  

  // Fonction permettant de savoir si le tableau 'next' est un tableau de pointeurs NULL

ffa95c23   grouille   Version finale sa...
38
  bool is_leaf(Node);

7d87f7e2   grouille   Makefile + complè...
39
40
  

  // Initialisation de la structure accueillant le dictionnaire

ffa95c23   grouille   Version finale sa...
41
  void init_tree(Node*);

7d87f7e2   grouille   Makefile + complè...
42
43
  

  // Détermine l'indice de rangement dans le tableau 'next' du caractère 'letter'

ffa95c23   grouille   Version finale sa...
44
  int find_caract_indice(char); // Ne fonctionne pas pour les caractères accentués

7d87f7e2   grouille   Makefile + complè...
45
46
  

  // Fonction d'ajout d'un mot 'word' dans la structure 'tree' de type 'arbre indexé'

ffa95c23   grouille   Version finale sa...
47
  void add_in_tree(Node, char*);

7d87f7e2   grouille   Makefile + complè...
48
49
  

  // Fonction qui détermine si le caractère est un caractère de fin de mot (espace, ',', ';', '.', etc..)

ffa95c23   grouille   Version finale sa...
50
  bool is_end_caract(char);

7d87f7e2   grouille   Makefile + complè...
51
52
  

  // Renvoi l'indice maximum du mot 'word'

ffa95c23   grouille   Version finale sa...
53
  char max_index(char*);

7d87f7e2   grouille   Makefile + complè...
54
55
  

  // Détermine si le mot 'word' est présent dans l'arbre indexé

ffa95c23   grouille   Version finale sa...
56
  void scan_word(Node, char*, int*, FILE*, int*);

7d87f7e2   grouille   Makefile + complè...
57
58
  

  // Retourne 'true' si le mot 'word' est non accentué, 'false' sinon

ffa95c23   grouille   Version finale sa...
59
  bool no_accent(char*);

7d87f7e2   grouille   Makefile + complè...
60
61
  

  // Transmet les mots du texte à analyser à 'scan_word'

ffa95c23   grouille   Version finale sa...
62
  void read_txt(FILE*, Node*, int*, int*);

7d87f7e2   grouille   Makefile + complè...
63
64
  

  // Transmet les mots de la biliothèque à 'add_in_tree'

ffa95c23   grouille   Version finale sa...
65
  void read_lib(FILE*, Node*);

7d87f7e2   grouille   Makefile + complè...
66
  

ffa95c23   grouille   Version finale sa...
67
68
  // Affiche l'arbre indexé

  void print_tree(Node, int, char*);

7d87f7e2   grouille   Makefile + complè...
69
70
  

  // Libère l'espace mémoire associé à l'arbre indexé

ffa95c23   grouille   Version finale sa...
71
  void free_tree(Node*);

7d87f7e2   grouille   Makefile + complè...
72
  

0e62ceb1   grouille   Code propre
73
  // Ajoute une erreur

ffa95c23   grouille   Version finale sa...
74
  void add_error(int*, char*, int, Node, FILE*, int*);

0e62ceb1   grouille   Code propre
75
76
  

  // Corrige les erreurs

ffa95c23   grouille   Version finale sa...
77
  void make_correction(char *, int, Node, FILE*, int*);

0e62ceb1   grouille   Code propre
78
79
80
  

  // Initialise le programme

  void init_pgrm(void);

ffa95c23   grouille   Version finale sa...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  

  // 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*);

  

  // Initialise le tableau contenant les mots de correction

  void init_correction(correction*);

  

  // Imprime les mots possibles pour la correction

  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);