Issuu on Google+

// PROGRAMA DE UN AUTOMATA FINITO DETERMINISTICO para EVALUAR SI UNA CADENA ES ACEPTADA O NO POR EL AUTOMATA // ROSA IMELDA GARCIA CHI #include <string.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream.h> int matriz[10][3]; int n,longitud,i,edo,edo_ini,edo_fin,sim,nuevo; char c,*cadena,*copia;

class afd { //constructor public: afd(void) { nuevo=0; } void pide_cadena(char *cadena) { cprintf("INTRODUCE LA CADENA A EVALUAR\n\n\n"); gets(cadena); } void pide_componentes() { int i,j,k; clrscr(); cprintf("CUANTOS ESTADOS SON (MAX.10)?\n\n"); cin>>edo; cprintf("CUANTOS SIMBOLOS SON (MAX.3)?\n\n"); cin>>sim; cprintf("Estado inicial? q"); cin>>edo_ini; cprintf("Estado final? q"); cin>>edo_fin; cprintf("INTRODUZCA LA FUNCION DE TRANSICION\n\n");


for (i=0;i<edo;i++) for(j=0;j<sim;j++) { cprintf("\r\nPOSICION [ %i][%i] introduce q",i,j); cin>>matriz[i][j]; } } void despliega_matriz() { int i,j,x,y=2; for (i=0;i<edo;i++) { gotoxy(27,y+2);printf("q%i",i); x=30; y=y+2; for(j=0;j<sim;j++) { gotoxy(x,2);printf("%i",j); gotoxy(x,y); printf("q%i",matriz[i][j]); x=x+3; } } } int descripcion(int n) { int elemento; elemento=matriz[nuevo][n]; return(elemento); } void despliega_datos() { int i; clrscr(); despliega_matriz(); cprintf("\n\n\rQ={"); for (i=0;i<edo;i++) printf(" q%i,",i); cprintf("}\n\n\r"); cprintf("Simbolos:{"); for (i=0;i<sim;i++) printf(" %i,",i); cprintf("}\n\n\r"); cprintf("q0=q%i",edo_ini); cprintf("\n\n\rF={q%i}",edo_fin); gotoxy(5,20); cprintf("\n\rCADENA : "); for (i=0;i<longitud;i++) printf("%c",cadena[i]);


gotoxy(5,22); } };/*clase*/ main() { afd r; clrscr(); r.pide_componentes(); r.pide_cadena(cadena); longitud=strlen(cadena); printf("\n%i",longitud); nuevo=0; for(i=0;i<longitud;i++) { c=cadena[i]; n=atoi(&c); nuevo=r.descripcion(n); } r.despliega_datos(); if (nuevo==edo_fin) printf("LA CADENA ES ACEPATADA"); else printf("LA CADENA NO ES VALIDA"); getch(); return (0); }


Programa afd para evaluar cadena aceptada o no