Blame view

projet.c 2.49 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
6
  #include <ctype.h>

  typedef struct noeud {

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

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

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

70bf4fa9   Raouak Haroun   commit du 23 avril
10
11
12
  typedef struct{

  	noeud *dictionnaire[26];

  } dico;

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

70bf4fa9   Raouak Haroun   commit du 23 avril
14
15
16
17
18
  *parbre=(noeud*)malloc(sizeof(noeud));

  (*parbre)->valeur=v;

  int i;

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

      (*parbre)->lettre[i]=NULL;

0c252f1e   Raouak Haroun   commit du 2 avril
19
  }

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

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

  	if(& (*parbre)->valeur==NULL)

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

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

70bf4fa9   Raouak Haroun   commit du 23 avril
25
26
27
28
  		if(ch[i]==39)

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

  		else

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

d01b83b4   Raouak Haroun   commit du 4 avril
29
  		if(&(*parbre)->valeur==NULL)

70bf4fa9   Raouak Haroun   commit du 23 avril
30
  			creer_et_initialiser_le_noeud(parbre,tolower(ch[i]));

0c252f1e   Raouak Haroun   commit du 2 avril
31
  	}

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

0c252f1e   Raouak Haroun   commit du 2 avril
33
34
  }

  

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

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

d01b83b4   Raouak Haroun   commit du 4 avril
37
38
  	noeud ** tmp_parbre=parbre;

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

70bf4fa9   Raouak Haroun   commit du 23 avril
39
40
  		if(tolower(ch[0])==v)

  			remplissage(tmp_parbre,ch);

0c252f1e   Raouak Haroun   commit du 2 avril
41
  }

70bf4fa9   Raouak Haroun   commit du 23 avril
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  void insertion_dictionnaire(noeud * Arbre[26]){

  	int i;

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

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

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

  		fclose(dico);

  	}

  }

  void initialiser_dictionnaire(noeud * Arbre[26]){

  	int i;

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

  		Arbre[i]=NULL;

  }

  bool existe(noeud ** parbre,char ch[128]){

  	int n=strlen(ch);

  	int i,cpt=0;

  	noeud ** tmp_parbre=parbre;

  	for(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)

  				return true;

  	}

  	else return false;

  }

  void corriger_texte(noeud*arbre[26]){

  	char ch[128];

d01b83b4   Raouak Haroun   commit du 4 avril
79
  	FILE *texte=fopen("texte.txt","r");

70bf4fa9   Raouak Haroun   commit du 23 avril
80
81
82
83
  	while(fscanf(texte,"%s",ch)==1){

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

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

  	}

d01b83b4   Raouak Haroun   commit du 4 avril
84
  	fclose(texte);

70bf4fa9   Raouak Haroun   commit du 23 avril
85
86
87
88
89
90
91
92
93
94
  }

  int main (){

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

d01b83b4   Raouak Haroun   commit du 4 avril
95
  	printf("\n");

0c252f1e   Raouak Haroun   commit du 2 avril
96
  	return 0;

0c252f1e   Raouak Haroun   commit du 2 avril
97
  }

70bf4fa9   Raouak Haroun   commit du 23 avril
98