Exemplo de RDF
#include
int main()
{
int q, i;
char string[1000];
printf("Programa que reconhece strings terminadas com 'aaa'.\n");
for(;;)
{
q = 0;
printf("\nDigite a string.\nDigite qualquer caractere diferente de 'a' ou 'b' para sair do programa.\n\n");
scanf("%s", &string);
for(i = 0; i < strlen(string); i++)
{
if(string[i] != 'a' && string[i] != 'b')
return 0;
else if( q == 0 && string[i] == 'a')
q = 1;
else if( q == 1 && string[i] == 'a')
q = 2;
else if( q == 2 && string[i] == 'a')
q = 3;
else if( (q == 1 && string[i] == 'b') || (q == 2 && string[i] == 'b') || (q == 3 && string[i] == 'b'))
q = 0;
}
if(q == 3)
printf("\nReconhece.\n");
else
printf("\nNao reconhece.\n");
}
}
Exemplo de RFN
#include
int main()
{
int s, i;
char string[1000];
printf("Programa que reconhece strings formadas por numero par de a's e de b's.\n");
for(;;)
{
s = 0;
printf("\nDigite a string.\nDigite qualquer caractere diferente de 'a' ou 'b' para sair do programa.\n\n");
scanf("%s", &string);
for(i = 0; i < strlen(string); i++)
{
if(string[i] != 'a' && string[i] != 'b')
return 0;
else if( s == 0 && string[i] == 'a' || (s == 3 && string[i] == 'b'))
s = 1;
else if( s == 1 && string[i] == 'a' || (s == 2 && string[i] == 'b'))
s = 0;
else if( s == 0 && string[i] == 'b' || (s == 3 && string[i] == 'a'))
s = 2;
else if( s == 1 && string[i] == 'b' || (s == 2 && string[i] == 'a'))
s = 3;
}
if(s == 0)
printf("\nReconhece.\n");
else
printf("\nNao reconhece.\n");
}
}