/*
S ==> aaBdd
S ==> aCd
B ==> a
C ==> aa
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char *cad=NULL;
int eres_a()
{
if ( cad[0] == 'a' ) { cad++; return 1; }
else return 0;
}
int eres_d()
{
if ( cad[0] == 'd' ) { cad++; return 1; }
else return 0;
}
int eres2d() { return eres_d() && eres_d(); }
int eres2a() { return eres_a() && eres_a(); }
int eresB() { return eres_a(); }
int eresC() { return eres2a(); }
int prod2() { return eres_a() && eresC() && eres_d(); }
int prod1() { return eres2a() && eresB() && eres2d(); }
int Reconoces()
{
char *aux=(char*)malloc(80);
strcpy(aux, cad); if ( prod1() ) return 1;
strcpy(cad, aux); if ( prod2() ) return 1;
return 0;
}
int main(int n, char **a)
{
cad = (char*)malloc(80);
system("clear");
while(1)
{
printf("==> "); scanf("%s", cad);
if ( Reconoces() ) printf("Cadena reconocida ...\n");
else printf("Cadena no reconocida ...\n");
}
printf("F I N\n\n\n");
}