tree.c 2.26 KB
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define size 50
#define taille 26

struct Noeud { char valeur;struct liste * fils; int complet;};

struct liste { struct Noeud * noeud; struct liste * suivant;};

struct dico {struct Noeud tableau[26];int dernier;};

//typedef struct liste* liste;

typedef struct Noeud Noeud;


Noeud* cons_noeud (char a)
{ 
    Noeud * N = malloc(sizeof(struct Noeud));
    N->valeur=a;
    N->fils=NULL;
    N->complet=0;
    return N;
}
    
/*void ajout_lettre (Noeud * N , char a)
{
  if(N==NULL)
        N=cons_noeud(a);
	else
    
    ((N->fils)->noeud)->valeur=a;
    ((N->fils)->noeud)->fils=NULL;
    (N->fils)->suivant=NULL; 

    
    }*/

//Reprendre cette fonction!
void ajout_mot (struct dico * D, char mot[size])
{
  Noeud *N;
  int j = 0 ; 
  while (j<D->dernier && D->tableau[j].valeur != mot[0])
    j++ ; 
  if(j < D->dernier)
   { 
     N=&(D->tableau[j]);
   }
   else
   {
       N=cons_noeud(mot[0]);
    }
      
   for (int i=1; i<size; i++)
    
     {
       if((N->fils->noeud)!=NULL)
	 {
	   N=N->fils->suivant->noeud;
	   N=cons_noeud(mot[i]);
	   //ajout_lettre(N,mot[i]);
	 }
       else
	 {
	  N=N->fils->noeud;
	  N=cons_noeud(mot[i]);
	  //ajout_lettre (N,mot[i]);
	  // N=N->fils->noeud;
	 
        }
      
     }
   N->complet=1;
  
}


void cons_dico(FILE* fp, struct dico* D)
{ char a;
  D->dernier=-1;
  if(fp==NULL)
    return;
  while(fscanf(fp,"%s",&a)!=EOF)
    { ajout_mot(D,&a);
      D->dernier++;}
    
}

int rech_mot(struct dico D,char mot [size])
{
    Noeud N;
    int nbre;
    for(int i=0;i<D.dernier;i++)
      {
	if(D.tableau[i].valeur==mot[0])
	  {
	     N=D.tableau[i];
	    for(int j=0;j<size;j++)
	      {
		if(N.valeur==mot[j])
		  N=*(N.fils)->noeud;
		else
		  nbre=0;
	      }
	    if(N.complet==1)
	      nbre=1;
	  } 
	else
	  nbre= 0;
      }
    return nbre;
}


void correction_texte(char filename[size], struct dico D)
{
  FILE *fp=fopen(filename, "r");
  char mot[size];
  int x;
  if(fp==NULL)
    return;
  else
    {
      while(fscanf(fp,"%s",mot)==1)
	{
	  x=rech_mot(D,mot);
	  if(x==0)
	    {
	      printf("il y a une erreur!\n");
	      printf("%s",mot);
	    }
	}
    }
	  
  
}
int main(){
  struct dico d;
  ajout_mot(&d,"emilie");
  printf( "%c",d.tableau[0].valeur);
  return 0;
}