Blame view

tree.h 3.39 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>

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