You are on page 1of 5

Automata Con Pila En C++

SOCIALIZA ESTO
0

Un poco de Teoria:

En teora de Autmatas, un autmata con Pila, es un


modelo matemtico de un sistema que recibe
una cadena constituida por smbolos de un alfabeto, y
determina si esta cadena pertenece al lenguaje que el
autmata reconoce. El lenguaje que reconoce un
autmata con pila pertenece al los Lenguajes Libres
de Contexto en la clasificacin de la Jerarqua de
Chomsky.

Veamos un Ejemplo de como funciona este


modelo matemtico:
Probamos con las palabras w=aabb y w=aab, y vemos
si pertenecen o no a L.

De la imagen anterior podemos ver que la


palabra w=aabb pertenece a L, y w=aab no pertenece
a L.

Implementacion en C++:
DATA HOSTED WITH BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
1. /*
2. Autor: Joel Cesar Fernandez Segura
3. Curso: Tecnicas De Construccion de Programas
4. Ejercicio: Implementacion de un Automata Con Pila
5. IDE: CodeBlocks
6. Pagina Web: http://codebotic.blogspot.com
7.
8. */
9. #include<iostream>
10. #include<cstdlib>
11.
12. using namespace std;
13.
14. struct nodo{
15.
16. char a;//campo donde se almacenara el caracter
17. struct nodo *sgte;
18. };
19.
20. typedef struct nodo *pila;
21.
22. /*---------------Funcion para Apilar un Caracter--------*/
23. void apila(pila &p,const char a){
24.
25. pila q=new (struct nodo) ;
26. q->a=a;
27. q->sgte=p;
28. p=q;
29. }
30.
31. /*------------- Funcion para Desapilar un elemento -----*/
32. void desapila(pila &p){
33.
34. int n=p->a;
35.
36. pila q=p;
37. p=p->sgte;
38. delete(q);
39. }
40.
41. /*------Funcion que decidir si se apila o desapila----*/
42. int recorrer(int e,char letra, pila &p){
43.
44. const char a='x';
45.
46. if(e==0&&letra=='a'){
47. apila(p,a);
48. return 0;
49. }
50.
51. if(e==0&&letra=='b'){
52. desapila(p);
53. return 1;
54. }
55.
56. if(e==1&&letra=='b'){
57. desapila(p);
58. return 1;
59. }
60.
61. return 0;
62. }
63.
64. /*---------- Lee la palabra Ingresada -------------*/
65. void leer(char pal[], pila &p){
66.
67. int estado=0;
68. int i=0;
69.
70. cout<<"\te. inicial//letra\n";
71. while(pal[i]){
72. cout<<"\t"<<estado<<" "<<pal[i]<<endl;
73. estado=recorrer(estado,pal[i],p);
74. i++;
75. }
76.
77. if(estado==1&&p==NULL)
78. cout<<"\n\tPalabra aceptada";
79.
80. else
81.
82. cout<<"\n\tPalabra rechazada";
83. }
84.
85. /*----------------Funcion Principal----------------*/
86. int main(void){
87.
88. system("color 0a");
89. pila p=NULL;//inicializamos la pila
90.
91. cout<<"\n\n\t*****AUTOMATA CON PILA*******\n\n";
92. char w[50]="aabb";//Cambiar la Palabra Aqui...!!!!
93. leer(w,p);
94. cout<<endl<<endl;
95. return 0;
96. }

You might also like