#include #include #include #include #include typedef struct noeud { int valeur; struct noeud *lettre[28]; } noeud ; typedef struct{ noeud *dictionnaire[26]; } dico; void creer_et_initialiser_le_noeud(noeud ** parbre, int v){ *parbre=malloc(sizeof(noeud)); (*parbre)->valeur=v; for(int i=0;i<28;i++) (*parbre)->lettre[i]=NULL; } void remplissage(noeud ** parbre, char ch[128]){ int i,n=strlen(ch); if(*parbre==NULL) creer_et_initialiser_le_noeud(parbre,tolower(ch[0])); for(i=1;ilettre[26]; else parbre=&(*parbre)->lettre[tolower(ch[i])-'a']; if(*parbre == NULL) creer_et_initialiser_le_noeud(parbre,tolower(ch[i])); } creer_et_initialiser_le_noeud(&(*parbre)->lettre[27],0); } void lecture(noeud ** parbre, FILE *fichier,int v){ char ch[128]; noeud ** tmp_parbre=parbre; while(fscanf(fichier,"%s",ch)==1) if(tolower(ch[0])==v) remplissage(tmp_parbre,ch); } 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; } int existe(noeud ** parbre,char ch[128]){ int n=strlen(ch); int a,cpt=0; noeud ** tmp_parbre=parbre; for(int i=0;ivaleur){ 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; return a; } void corriger_texte(noeud*arbre[26]){ 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); } fclose(texte); } 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); printf("\n"); return 0; }