Autómata finito en lenguaje c

Páginas: 7 (1539 palabras) Publicado: 8 de abril de 2011
IMPLEMENTACION DE UN AUTÓMATA FINITO EN LENGUAJE C

GRUPO DE TRABAJO (Alumnos de 2º 5º)
Juarez, Roberto Fernando

Romano, Andres

COMENTARIOS
El programa permite:

-Especificar el grafo de transiciones

-Ingresar la palabra a ser analizada-Analizar la palabra a partir del grafo

Con esto se logro obtener una implementación generalizada para cualquier palabra perteneciente a un lenguaje regular.

PROGRAMA EN C

/* El siguiente programa, construye un automata finito a partir de la carga

de un grafo de transiciones deterministico, y analiza una palabra ingre-

sada para determinar si responde ono, al Lenguaje del Grafo ingresado.

*/

#include

#include

#include

#include

#include

#include

#define maxnodo 10 /* para un grafo con mas de diez estados, modifique

la constante maxnodo.*/

typedef struct registro {char nombre;

char estado;

char simbent[4];

char trans[4];

struct registro *sig[4];

}nodo;

void autor()

{ gotoxy(9,25);

printf("Alummos: Juarez, Roberto Fernando; Romano, Andres - U.T.N. 2004.");

}

void pausa()

{

gotoxy(22,25); printf("Pulse una tecla para continuar...");getch();

gotoxy(22,25); printf(" ");

}

void pausaleer()

{

gotoxy(16,24); printf("Pulse una tecla para leer el proximo simbolo...");

getch();

gotoxy(16,24); printf(" ");

}

void dibujanodo(int col, int fil)

{

gotoxy(col,fil); printf ("ÚÄÄÄÄÄÂÄÄÄÄÄÂÄÄÂÄÄÂÄÄÄÄÄ¿");gotoxy(col,fil+1); printf ("³ ³ ³ ³ ³ ³");

gotoxy(col,fil+2); printf ("³ ³ ÃÄÄÅÄÄÅÄÄÄÄÄ´");

gotoxy(col,fil+3); printf ("³ ³ ³ ³ ³ ³");

gotoxy(col,fil+4); printf ("³ ³ ÃÄÄÅÄÄÅÄÄÄÄÄ´");

gotoxy(col,fil+5); printf ("³ ³ ³ ³ ³ ³");

gotoxy(col,fil+6); printf ("³ ³ ÃÄÄÅÄÄÅÄÄÄÄÄ´");gotoxy(col,fil+7); printf ("³ ³ ³ ³ ³ ³");

gotoxy(col,fil+8); printf ("ÀÄÄÄÄÄÁÄÄÄÄÄÁÄÄÁÄÄÁÄÄÄÄÄÙ");

}

void ver_dato_nodo(nodo *actual, int col, int fil)

{

gotoxy(col-7,fil+7); printf("%x",actual);

gotoxy(col,3+fil); printf("%c",actual->nombre);

gotoxy(col+6,3+fil); printf("%c",actual->estado);

for(int k=0;(actual->simbent[k]!= ' '); ++k)

{

gotoxy(col+10,k+k+fil); printf("%c",actual->simbent[k]);

gotoxy(col+13,k+k+fil); printf("%c",actual->trans[k]);

gotoxy(col+16,k+k+fil); printf("%x",actual->sig[k]);

}

}

void cargar_nodo(nodo *lis[],int max)

{

int nrotrans, nroestados, ult;

char modifica;

clrscr();

gotoxy(20,2);printf("CARGA DE DATOS EN LOS ESTADOS (nodos)");

for(ult = 0; lis[ult] != NULL; ++ult); //para agregar al ultimo

do {

gotoxy(10,5);

printf("Debera Ingresar la cantidad de estados que ");

gotoxy(10,6);

printf("tendra el grafo, o que desea "

" agregar al grafo. (menores a %i): ",max - ult);

scanf("%i",&nroestados);}while((nroestados < 0) || (nroestados > max - ult));

for (int i = ult; i < ult + nroestados; ++i)

{

clrscr();

gotoxy(20,2); printf("Carga de datos en los Estados (nodos)");

gotoxy(15,3); printf("El primer Estado (nodo) a cargar, debe ser inicial.");

gotoxy(29,4); printf("%i de %i Estados",(i+1),nroestados);...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Automatas finitos y lenguajes regulares
  • AUTOMATAS FINITOS
  • AUTOMATAS FINITOS
  • Automatas Finitos
  • Automatas finitos
  • Automatas finitos
  • AUTOMATAS FINITOS
  • Automatas Finitos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS