Blame view

projet.c 2.9 KB
0c252f1e   Raouak Haroun   commit du 2 avril
1
2
3
4
  #include <stdio.h>

  #include <stdlib.h>

  #include <string.h>

  #include <stdbool.h>

70bf4fa9   Raouak Haroun   commit du 23 avril
5
  #include <ctype.h>

762b7dc2   Raouak Haroun   dernier commit
6
  

70bf4fa9   Raouak Haroun   commit du 23 avril
7
  typedef struct noeud {

0c252f1e   Raouak Haroun   commit du 2 avril
8
    int valeur;

70bf4fa9   Raouak Haroun   commit du 23 avril
9
    struct noeud *lettre[28];

0c252f1e   Raouak Haroun   commit du 2 avril
10
  } noeud ;

762b7dc2   Raouak Haroun   dernier commit
11
  

70bf4fa9   Raouak Haroun   commit du 23 avril
12
13
14
  typedef struct{

  	noeud *dictionnaire[26];

  } dico;

762b7dc2   Raouak Haroun   dernier commit
15
  

d01b83b4   Raouak Haroun   commit du 4 avril
16
  void creer_et_initialiser_le_noeud(noeud ** parbre, int v){

762b7dc2   Raouak Haroun   dernier commit
17
18
19
    *parbre=malloc(sizeof(noeud));

    (*parbre)->valeur=v;

    for(int i=0;i<28;i++)

70bf4fa9   Raouak Haroun   commit du 23 avril
20
      (*parbre)->lettre[i]=NULL;

0c252f1e   Raouak Haroun   commit du 2 avril
21
  }

762b7dc2   Raouak Haroun   dernier commit
22
  

d01b83b4   Raouak Haroun   commit du 4 avril
23
  void remplissage(noeud ** parbre, char ch[128]){

70bf4fa9   Raouak Haroun   commit du 23 avril
24
  	int i,n=strlen(ch);

762b7dc2   Raouak Haroun   dernier commit
25
  	if(*parbre==NULL)

18d7b5f9   Raouak Haroun   dernier commit
26
  	  creer_et_initialiser_le_noeud(parbre,tolower(ch[0]));

d01b83b4   Raouak Haroun   commit du 4 avril
27
  	for(i=1;i<n;i++){

18d7b5f9   Raouak Haroun   dernier commit
28
29
30
31
32
33
  	  if(ch[i]==39)

  	    parbre=&(*parbre)->lettre[26];

  	  else

  	    parbre=&(*parbre)->lettre[tolower(ch[i])-'a'];

  	  if(*parbre == NULL)

  	    creer_et_initialiser_le_noeud(parbre,tolower(ch[i]));

0c252f1e   Raouak Haroun   commit du 2 avril
34
  	}

70bf4fa9   Raouak Haroun   commit du 23 avril
35
  	creer_et_initialiser_le_noeud(&(*parbre)->lettre[27],0);

0c252f1e   Raouak Haroun   commit du 2 avril
36
37
  }

  

762b7dc2   Raouak Haroun   dernier commit
38
  

70bf4fa9   Raouak Haroun   commit du 23 avril
39
  void lecture(noeud ** parbre, FILE *fichier,int v){

d01b83b4   Raouak Haroun   commit du 4 avril
40
  	char ch[128];

d01b83b4   Raouak Haroun   commit du 4 avril
41
42
  	noeud ** tmp_parbre=parbre;

  	while(fscanf(fichier,"%s",ch)==1)

18d7b5f9   Raouak Haroun   dernier commit
43
44
  	  if(tolower(ch[0])==v)

  	    remplissage(tmp_parbre,ch);

0c252f1e   Raouak Haroun   commit du 2 avril
45
  }

762b7dc2   Raouak Haroun   dernier commit
46
  

70bf4fa9   Raouak Haroun   commit du 23 avril
47
  void insertion_dictionnaire(noeud * Arbre[26]){

18d7b5f9   Raouak Haroun   dernier commit
48
49
50
51
52
53
    int i;

    for(i=0;i<26;i++){

      FILE *dico=fopen("dico.txt","r");

      lecture(&Arbre[i],dico,i+'a');

      fclose(dico);

    }

70bf4fa9   Raouak Haroun   commit du 23 avril
54
  }

762b7dc2   Raouak Haroun   dernier commit
55
  

70bf4fa9   Raouak Haroun   commit du 23 avril
56
  void initialiser_dictionnaire(noeud * Arbre[26]){

18d7b5f9   Raouak Haroun   dernier commit
57
58
59
    int i;

    for(i=0;i<26;i++)

      Arbre[i]=NULL;

70bf4fa9   Raouak Haroun   commit du 23 avril
60
  }

762b7dc2   Raouak Haroun   dernier commit
61
  

2eee91cd   Raouak Haroun   dernier commit
62
  int existe(noeud ** parbre,char ch[128]){

18d7b5f9   Raouak Haroun   dernier commit
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
    int n=strlen(ch);

    int a,cpt=0;

    noeud ** tmp_parbre=parbre;

    for(int i=0;i<n-1;i++){

      if((*tmp_parbre)!=NULL){

        if(tolower(ch[i])==(*tmp_parbre)->valeur){

  	cpt++;

  	if (ch[i+1]==39)

  	  tmp_parbre=&(*tmp_parbre)->lettre[26];

  	else

  	  tmp_parbre=&(*tmp_parbre)->lettre[tolower(ch[i+1])-'a'];

        }

      }

    }

    if ((*tmp_parbre)!=NULL){

      if (tolower(ch[cpt])==(*tmp_parbre)->valeur)

        if ((*tmp_parbre)->lettre[27]!=NULL)

  	a=1;

    }

    else a=0;

dd84636f   Raouak Haroun   dernier commit
83
  	return a;

70bf4fa9   Raouak Haroun   commit du 23 avril
84
  }

70bf4fa9   Raouak Haroun   commit du 23 avril
85
  void corriger_texte(noeud*arbre[26]){

18d7b5f9   Raouak Haroun   dernier commit
86
87
88
89
90
    char ch[128];

    FILE *texte=fopen("texte.txt","r");

    while(fscanf(texte,"%s",ch)==1){

      if(!existe(&arbre[tolower(ch[0])-'a'],ch))

        printf("%s\n",ch);

70bf4fa9   Raouak Haroun   commit du 23 avril
91
  	}

18d7b5f9   Raouak Haroun   dernier commit
92
    fclose(texte);

70bf4fa9   Raouak Haroun   commit du 23 avril
93
  }

762b7dc2   Raouak Haroun   dernier commit
94
  

2eee91cd   Raouak Haroun   dernier commit
95
96
97
  

  void desallouer_arbre(noeud *arbre){

    

18d7b5f9   Raouak Haroun   dernier commit
98
99
100
101
102
103
104
105
    if(arbre != NULL)

      for(int i=0;i<28;i++){

        if(arbre->lettre[i] != NULL)

  	desallouer_arbre(arbre->lettre[i]);

      }

    else

      free(arbre);

    

2eee91cd   Raouak Haroun   dernier commit
106
107
108
109
110
  }

  void desallouer_dictionnaire(noeud*arbre[26]){

    for(int i=0;i<26;i++)

      desallouer_arbre(arbre[i]);

  }

18d7b5f9   Raouak Haroun   dernier commit
111
  

2eee91cd   Raouak Haroun   dernier commit
112
113
114
  

  

  

70bf4fa9   Raouak Haroun   commit du 23 avril
115
  int main (){

18d7b5f9   Raouak Haroun   dernier commit
116
117
118
119
120
121
122
123
124
125
126
127
    dico d;

    initialiser_dictionnaire(d.dictionnaire);

    insertion_dictionnaire(d.dictionnaire);

    printf("-----------------------------------------------------------\n");

    printf("Bienvenue dans le correcteur orthographique de HAROUN V1.0\n");

    printf("-----------------------------------------------------------\n");

    printf("\nvoici les fautes dans le texte: \n \n");

    corriger_texte(d.dictionnaire);

    desallouer_dictionnaire(d.dictionnaire);

    printf("\n");

    

    return 0;

0c252f1e   Raouak Haroun   commit du 2 avril
128
  }

70bf4fa9   Raouak Haroun   commit du 23 avril
129