rendered paste body#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"AFN.C"
void decide(int*d,int*e,int n)
{
char rep='y';
char* word;
int i,j;
int q,c;
do
{
word=(char*)malloc(sizeof(char*));
printf("\n***entrer le mot");
scanf("%s",word);
q=*(d+(0+decode(word[0])));
for(i=1;i<strlen(word);i++)
{
q=*(d+((q*n)+decode(word[i])));
}
if(*(e+q)==1) printf(" \n\n defined");
else printf("\n\n not defined!!!");
lab2:printf("\n\n\n analyser un autre mot?(y/n)");
rep=getchar();
printf("%c",rep);
if(rep=='n') goto lexit;
if((rep!='y')&&(rep!='n')) goto lab2;
}while(rep=='y');
lexit:
printf("end");
}
void miroire(int* d,int* e,int n,char* sigma)
{
list* *dr;
int*er;
int i;
int j;
int k;
list* tmp=empty();
list* Q0=empty();
printf("\n\nbefore-------------------------------------\n\n");
for(i=0;i<n*40;i++)
printf("%d",d[i]);
printf("\n\n");
for(i=0;i<n;i++)
printf("%d",*(e+i));
dr=(list* *)malloc(n*40*(sizeof(list* *)));
for(i=0;i<(40*n);i++) *(dr+i)=empty();
er=(int*)malloc(n*sizeof(int*));
*(er+0)=1;
for(i=1;i<n;i++)
{
if(e[i]==1) {er[i]=2; Q0=add(Q0,i);}
else er[i]=e[i];
}
for(j=0;j<strlen(sigma);j++)
{
for(i=0;i<n;i++)
{
tmp=empty();
for(k=0;k<n;k++)
{
if(*(d+(k*40)+decode(sigma[j]))==i) tmp=add(tmp,k);
}
*(dr+(i*40)+decode(sigma[j]))=tmp;
}
}
printf("\n\nafter----------------------------------------\n\n");
printf("\n\n"); affiche(Q0); printf("\n\n");
for(i=0;i<n*40;i++)
affiche(dr[i]);
printf("\n\n");
for(i=0;i<n;i++)
printf("%d",*(er+i));
AFNdecide(dr,er,sigma,Q0,n);
}
void makeAFD()
{
char* mous;
int n;
int*d;
int*e;
int*save;
int i,j,q,k;
FILE *f;
char* nomf;
mous=(char*)malloc(sizeof(char*));
printf("*****definition de l'automates**********\n");
printf("entrer l'alphabet(comme chaine de char)\n");
scanf("%s",mous);
printf("entrer le nombre d'etat:\n");
scanf("%d",&n);
e=(int*)malloc(n*sizeof(int));
d=(int*)malloc((n*40)*sizeof(int));
for(i=0;i<(n*40);i++)
{
d[i]=-1;
}
for(i=0;i<n;i++)
{
e[i]=-1;
}
printf("deter d'etatas finaux (1 si oui 0 sinon)\n");
for(i=0;i<n;i++)
{
printf("q%d------>?",i);
scanf("%d",&e[i]);
printf("\n");
}
printf("enter l'mage de delta(qi,ai) si il n'est pas"
" dedinie entrer -1\n");
for(i=0;i<n;i++)
{
for(j=0;j<strlen(mous);j++)
{
printf(" %c \n",mous[j]);
printf("q%d----->q?: ",i);
scanf("%d",&q);
d[(i*40)+decode(mous[j])]=q;
printf("\n");
}
}
printf("automates saisie\n");
nomf=(char*)malloc(sizeof(char*));
printf("entrer le nom du fichier:");
scanf("%s",nomf);
f=fopen(nomf,"w");
if(f!=NULL);
{
fprintf(f,"%d\n",strlen(mous));
for(i=0;i<strlen(mous);i++)
{fprintf(f,"%d\n",mous[i]);}
fprintf(f,"%d\n",n);
for(i=0;i<n;i++)
{
fprintf(f,"%d\n",e[i]);
}
for(i=0;i<n*40;i++)
{
fprintf(f,"%d\n",d[i]);
}
fclose(f);
}
printf("\n\n\n****************start****************\n\n\n");
decide(d,e,40);
}
void AFDchargeur()
{
char*nomf;
FILE *f;
int size,i,n,j;
char* alpha;
int *e;
int *d;
nomf=(char*)malloc(sizeof(char*));
printf("\n\nsous construction");
printf("\nenter le nom du fichier ou il y a l'auomate:");
scanf("%s",nomf);
f=(FILE *)malloc(sizeof(FILE *));
f=fopen(nomf,"r");
if(f!=NULL)
{
fscanf(f,"%d",&size);
for(i=0;i<size;i++)
{fscanf(f,"%d",&alpha[i]);}
fscanf(f,"%d",&n);
e=(int*)malloc(n*sizeof(int*));
d=(int*)malloc(n*40*(sizeof(int*)));
for(i=0;i<n;i++) fscanf(f,"%d",&e[i]);
for(i=0;i<n;i++)
{
for(j=0;j<40;j++)
{
fscanf(f,"%d",&*(d+(i*40)+j));
}
}
fclose(f);
}
else
{
printf("fichier itrouvable ou ouverture impossible");
getchar();
return;
}
printf("\n\n\nmiroire-------------------------\n\n\n");
miroire(d,e,n,alpha);
}
int main()
{
//makeAFD();
AFDchargeur();
getchar();
return(0);
}