#include <stdio.
h>
#include <stdlib.h>
struct etat{
int atat,et_suiv_1,car_at_suiv_1,et_suiv_2,car_at_suiv_2;
//1:alphabit 0:nemero 2:il nexest pas d un etat suivant oucaracteur 3:etat
final 4:n est pas etat final
};
struct fino{
int x;
struct fino* suivant;
};
int main()
{
struct etat* tab;
struct etat* t;
int nb,i,n,acce_ata,tr,y,b;
struct fino* p;
struct fino* q;
char m[100],c;
p=NULL;
q=NULL;
do{
printf("ENTREZ LE NOMBRE DETAT 'un nombre positih not null' \n");
scanf("%d",&nb);
}while(nb<=0);
tab=malloc(sizeof(struct etat)*nb);
printf("\n\n");
i=0;
while(i<nb)
{
tab[i].atat=i;
do{
printf("\n \nENTREZ letat suivant 1 de letat nemero %d 'un nombre positih not
null' \n",i);
scanf("%d",&tab[i].et_suiv_1);
}while(tab[i].et_suiv_1<0);
do{
printf("ENTREZ le caracteur d etat suivant de letat nemero %d '1:alphabit
0:nemero ' \n",i);
scanf("%d",&tab[i].car_at_suiv_1);
}while(tab[i].car_at_suiv_1!=0 && tab[i].car_at_suiv_1!=1 &&
tab[i].car_at_suiv_1!=3);
do{
printf("ENTREZ letat suivant 2 de letat nemero %d 'un nombre positih not null'
\n",i);
scanf("%d",&tab[i].et_suiv_2);
}while(tab[i].et_suiv_2<0);
do{
printf("ENTREZ le caracteur d etat suivant de letat nemero %d '1:alphabit
0:nemero ' \n",i);
scanf("%d",&tab[i].car_at_suiv_2);
}while(tab[i].car_at_suiv_2!=0 && tab[i].car_at_suiv_2!=1 &&
tab[i].car_at_suiv_2!=3);
printf("---------------------------------------------------------------------------
---------\n");
i++;
}
b=2;
while(b!=1){
printf("\nentrez votre mot\n");
getchar();
scanf("%s",&m);
printf("\n entrez le nombre de caracteur de votre mot : ");
scanf("%d",&n);
i=0;
acce_ata=0;
tr=1;
while(i<n&&tr==1)
{
printf("\n%d",acce_ata);
c=m[i];
if(isalpha(c))
{
y=1;
}
else if(isdigit(c))
{
y=0;
}
else
{
printf("\nle mot napartien pas ase lengage");
return 0;
}
if(y==tab[acce_ata].car_at_suiv_1)
{
acce_ata=tab[acce_ata].et_suiv_1;
}
else{
if(y==tab[acce_ata].car_at_suiv_2)
{
acce_ata=tab[acce_ata].et_suiv_2;
}
else{
tr=0;
if(i!=n){
i=5;
}
}
}
printf("\n%d",acce_ata);
printf("\n%d",i);
printf("----------------------------------_----------");
i=i+1;
}
printf("%d",acce_ata);
if(i==5)
{
printf("\nle mot napartien pas a se lengage");
}
else{
if(i!=n)
{
printf("\nle mot napartien pas a se lengage");
}
else{
printf("\n le mot apartien a ce longage ");
}
}
printf("pur quiter entrez 1");
scanf("%d",&b);
return 0;