document.write('
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. }
');