All pastes #30988 Raw Edit

Something

public text v1 · immutable
#30988 ·published 2005-11-24 22:06 UTC
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);
}