Reconhecimento de strings em um AFD em C

1. Reconhecimento de strings em um AFD em C

Ítalo Marcos
hidantachi1

(usa Outra)

Enviado em 14/12/2017 - 08:45h

Olá,
Tenho que determinar se as strings no arquivo pertencem ao AFD.
Consegui fazer apenas para uma string. O objetivo agora é ler mais de uma string, mas eu não consegui fazer a implementação, sempre acaba entrando em um loop ou qualquer outro erro.
Quais as dicas vocês dão?

Linguagem:
L={yxz|y E {a,b,c}+ e z E {1,2,3}+} 


Exemplo do arquivo para a leitura de várias strings

abcx123
23ax2b1
bx31
a2x3b
bcax321


Meu código para reconhecer somente uma string:

#include <stdio.h>
#include <stdlib.h>

FILE *arquivo;

void voltaLeitura()
{
fseek(arquivo, -1, SEEK_CUR);
}

char getSimbolo()
{
char temp;
if(arquivo==NULL)
{
printf("Erro: arquivo n&#65533;o aberto!\n");
return EOF;
}

temp = fgetc(arquivo);
return temp;
}

int AFD()
{
int E=0;
char S='i';
while(S!=EOF)
{
S=getSimbolo();
switch(E)
{
case 0:
if(S=='a'||S=='b'||S=='c')
E=1;
else
E=0;
break;
case 1:
if(S=='x')
E=2;
else if(S=='a'||S=='b'||S=='c')
E=1;
else
E=0;
break;
case 2:
if(S=='1'||S=='2'||S=='3')
E=3;
else if(S=='a'||S=='b'||S=='c')
E=1;
else
E=0;
break;
case 3:
if(S=='1'||S=='2'||S=='3')
E=3;
else
E=4;
break;
}
}
if(E==4) return 1;
return -1;
}

int main()
{
int retorno;

arquivo = fopen("entrada2b.txt", "r");
retorno = AFD();
if(retorno == 1)
printf("Valido\n");
else if(retorno == -1)
printf("Invalido\n");
fclose(arquivo);
return 0;
}





  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts