Automatas Programables
Automatas Programables
SOCIALIZA ESTO
0
Un poco de Teoria:
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. }