0% ont trouvé ce document utile (0 vote)
39 vues3 pages

TL Imad

Le programme définit des structures de données pour représenter des états et des transitions dans un automate fini. Il demande ensuite à l'utilisateur de saisir les informations sur les états et les transitions pour construire l'automate, puis teste si des mots donnés sont acceptés par cet automate.

Transféré par

boukeskesoussama6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues3 pages

TL Imad

Le programme définit des structures de données pour représenter des états et des transitions dans un automate fini. Il demande ensuite à l'utilisateur de saisir les informations sur les états et les transitions pour construire l'automate, puis teste si des mots donnés sont acceptés par cet automate.

Transféré par

boukeskesoussama6
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi