//Analizador #include #include #include const max=80; char datos[max]; int tope=-1; class pila { public: char meter(char nuevo); char sacar(char &valor); }; char pila::meter(char nuevo) { if (tope==max-1) return 0; else { tope++; datos[tope]=nuevo; return 1; } } char pila::sacar(char &valor) { if (tope==-1) { cout<<"Pila esta Vacia \n"; return 0; } else { valor=datos[tope]; tope--; return 1; } } main () { pila p,c,ll; char vector[50]; int i=0; clrscr (); cout<<"\n\t\t**********************"; cout<<"\n\t\t ANALIZADOR"; cout<<"\n\t\t**********************"; cout<<"\n\t\t EXPRESION\n\t\t "; gets (vector); do{ if (vector[i]=='(') { p.meter(vector[i]); } else if (vector[i]=='(') { c.meter(vector[i]); } else if (vector[i]=='(') { ll.meter (vector[i]); } i++; }while (vector[i]!='.'); i=0; do{ if (vector[i]==')') { p.sacar('('); } else if(vector[i]==']') { c.sacar(']'); } else if(vector[i]=='}') { ll.sacar('{'); } i++; }while(vector[i]!='.'); clrscr (); cout<<"\n\t\t La expresion dada es: \n\n\t\t "; puts(vector); if (tope==-1) cout<<"\n\t\t ***EXPRESION CORRECTA***\n"; else cout<<"\n\t\t ***EXPRESION INCORRECTA***\n"; getch(); return 0; }