Está en la página 1de 9

//AUTOMATA de cadenas y combinaciones de 0s y 1s que terminan en 1 #include <stdio.h> #include <conio.h> #include <ctype.h> #include <iostream.

h> #define E 0x00 #define OK 0x05 int main() { clrscr(); char Cadena[50]; int Trans[][3]= {// 0 1 Final? /* E1 */1,2,E, /* E2 */1,3,OK, /* E3 */3,2,E, }; int Simbol = 3; int Estado = 1; int Iterac = 0; printf("\n Ingrese La Cadena: "); gets(Cadena); printf("\n Comprobando"); while(1) { if(Cadena[Iterac] == '0' ) Simbol=1; else if(Cadena[Iterac] == '1') Simbol=2; else if(Cadena[Iterac]== '\0') Simbol=3; else break; cout<<"\nEstado = Q"<<Estado-1<<" Cadena["<<Cadena[Iterac]<<"]"; cout<<" Transiciones = Q"<<Trans[Estado-1][Simbol-1]-1; Estado = Trans[Estado-1][Simbol-1]; if(Estado == E) break; if(Estado == OK)break; Iterac++; } if(Estado == OK) printf("\n Palabra '%s': es valido",Cadena); else printf("\n Error"); getch(); return 0; }

/*AUTOMATA QUE RECONOCE conjunto de una cadena vacia, o todas las cadenas pares de 0s y 1s*/ #include<stdio.h> #include<conio.h> #include<ctype.h>

#define E 0x00 #define OK 0x05 int main() { char Entrada[20]; int Transiciones[][3]= {2,3,OK, 1,4,E, 4,1,E, 3,2,E, }; int Simbol=0; int Estado=1; int Iterac=0; printf("Ingrese La Cadena : "); gets(Entrada); printf("\n Analizando............"); while(1) { if(Entrada[Iterac]=='0') Simbol=1; else if(Entrada[Iterac]=='1') Simbol=2; else if(Entrada[Iterac]=='\0') Simbol=3; else break; Estado=Transiciones[Estado-1][Simbol-1]; if(Estado==E) break; if(Estado==OK) break; Iterac++; } if(Estado==OK) { printf(" Aceptado....!!"); } else { printf("NO es Aceptado....!!"); } getch(); return 0; }

/ AUTOMATA FINITO QUE ACEPTA DEFINIR VARIABLES


#include <iostream.h> #include <stdlib.h> void estado_final() { cout<<"EL ALFABETO SI ES ACEPTADO POR EL AUTOMATA "; exit(0); } void estado_de_error() {cout<<"EL ALFABETO NO ES ACEPTADO POR EL AUTOMATA ";

exit(0); } void main() { char alfabeto[27]; char ALFABETO[27]; int numeros[10],f; char var[15]; cout<<"INGRESE UNA CADENA PARA EVALUAR SI ES O NO VARIABLE : "; cin>>var;cout<<"\n"; for(int i=0;i<=25;i++) { alfabeto[i]='a'+i; ALFABETO[i]='A'+i; if(var[0]==ALFABETO[i]) estado_final(); if(var[0]==alfabeto[i]) estado_final(); for(int j=48;j<=58;j++) { numeros[j]=j; if(var[0]==numeros[j]) estado_de_error(); } } estado_de_error(); }

//reconoce nros reales y/o con notacion cientifica #include<stdio.h> #include<conio.h> #include<ctype.h> #include<iostream.h> #define CAD_FIN '\0' int main() { char Entrada[20]; int Estado; int Ind; cout<<"\n Ingrese Cadena : "; gets(Entrada); cout<<"\n Analizando...."; cout<<"\n Presione ENTER para continuar...\n"; getch(); Estado=1; Ind=0; while(Entrada[Ind]!=CAD_FIN) { cout<<"\n *EVALUANDO VARIABLE #"<<Ind+1; cout<<"\n\n ESTADO ACTUAL <<"<<Estado<<">>"; switch(Estado) { case 1: { if(isdigit(Entrada[Ind]))

Estado=2; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 2: { if(isdigit(Entrada[Ind])) Estado=2; else if(Entrada[Ind]=='.') Estado=3; else if((Entrada[Ind]=='E')) Estado=5; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 3: { if(isdigit(Entrada[Ind])) Estado=4; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 4: { if(isdigit(Entrada[Ind])) Estado=4; else if((Entrada[Ind]=='E')) Estado=5; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 5: { if((Entrada[Ind]=='+')||(Entrada[Ind]=='-')) Estado=6; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 6:

{ if(isdigit(Entrada[Ind])) Estado=7; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; case 7: { if(isdigit(Entrada[Ind])) Estado=7; cout<<"\n LA FUNCION DE TRANSICION <<"<<Entrada[Ind]<<">> NOS DA EL NUEVO ESTADO : "<<Estado; cout<<"\n Presione ENTER para continuar...\n"; getch(); }break; }Ind=Ind+1; } if(Estado==4||Estado==7) { cout<<"\n\n ESTADO FINAL ===> "<<Estado; cout<<"\n POR LO TANTO LA CADENA <<"<<Entrada<<">> ES VALIDA"; } else { cout<<"\n\n ESTADO FINAL ===> "<<Estado; cout<<"\n POR LO TANTO LA CADENA <<"<<Entrada<<">> NO ES VALIDA"; } getch(); return 0; }

/*AUTOMATA DE PILA QUE ACEPTA LA CADENA x^n y^m, m<=n */ #include <iostream.h> void main() { char cad[30],pila[60]; int error=0,estado=1,i=0,j=0; cout<<"Ingrese la cadena\n"; cin>>cad; while (cad[i]!='\0') { switch(estado) { case 1: pila[j]='#'; estado=2; case 2: if(cad[i]=='x')

{j++; pila[j]='x'; estado=2;} else {if(cad[i]=='y') {if(pila[j]=='x') {pila[j]=0; j--; estado=3;} else error=1;} else error=1;}break; case 3: if (pila[j]=='x') {if(cad[i]=='y') j--; estado=3; } else estado=4; } else error=1; break; case 4: if (cad[i]!='y') {if(pila[j]=='#') {j--; pila[i]=0;} else error=1;} else error=1;break; } i++; } if(error==0) cout<<"\nLa cadena SI es aceptada\n"; else cout<<"\nla cadena NO es aceptada\n"; } {pila[j]=0;

/* AUTOMATA DE PILA QUE ACEPTA x^n y^m, m<=n #include <iostream.h> void main() { char cad[30],pila[60]; int error=0,estado=1,i=0,j=0; cout<<"Ingrese la cadena\n"; cin>>cad; while(cad[i]!='\0') { switch(estado) { case 1:

*/

if(cad[i]=='x') {j++; pila[j]='x'; estado=1;} else { if(cad[i]=='y') { if(pila[j]=='x') {pila[j]=0; j--; estado=2;} else error=1; } else error=1;} break; case 2: if(cad[i]=='y') {if (pila[j]=='x') {pila[j]=0; j--; estado=2; } else error=1; } else error=1; break; } i++; } if(error==0) cout<<"La cadena es aceptada"; else cout<<"la cadena no es aceptada";

//AUTOMATA DE PILA QUE ACEPTA LA CADENA x^n y^m, m=n Ejm: xxyy, xy, xxxyyy #include<iostream.h> void main() { int estado=1,j=0,i=0; char cad[20],array[20]; cout<<"\n\n\t AUTOMATA QUE ACEPTA LA CADENA x^n y^m, m=n Ejm: xxyy, xy, xxxyyy"; cout<<"\n\nINGRESE LA CADENA\t"; cin>>cad; array[j]='#'; j++; while(cad[i]!='\0') { switch(estado)

{ case 1: if(cad[i]=='x') { i++;j++; array[j]=cad[i]; estado=1;} else { j--; estado=2;} break; case 2: if(cad[i]=='y') { array[j]=cad[i]; i++;j--; estado=2;} break; } } if(array[j]=='#') cout<<"\nLA CADENA PERTENECE AL LENGUAJE"; else cout<<"\n\nla cadema no pertenece al lenguaje"; } //AUTOMATA DE PILA QUE ACEPTA LA CADENA x^n y^m, m<=n #include <iostream.h> void main() { char cad[30],pila[60]; int error=0,estado=1,i=0,j=0; cout<<"\n\n\t AUTOMATA QUE ACEPTA LA CADENA x^n y^m, m<=n Ejm: xxyy, xxy, xxxy"; cout<<"\n\nINGRESE LA CADENA\t"; cin>>cad; while(cad[i]!='\0') { switch(estado) { case 1: if(cad[i]=='x') {j++; pila[j]='x'; estado=1;} else { if(cad[i]=='y') { if(pila[j]=='x') {pila[j]=0; j--; estado=2;} else error=1; } else error=1;} break; case 2: if(cad[i]=='y') { if (pila[j]=='x') { pila[j]=0; j--;

estado=2; } else error=1; } else error=1; break; } i++; }

if(error==0) cout<<"\nLA CADENA PERTENECE AL LENGUAJE"; else cout<<"\n\nla cadema no pertenece al lenguaje";

También podría gustarte