void Produccion_5(void){ Desapilar(); Apilar(1); /* <b> */ Apilar(8); /* a */ Apilar(5); /* <d> */ Avance= 0; }
void Produccion_4(void){ Desapilar(); Apilar(7); /* <e> */ Apilar(5); /* <d> */ Apilar(2); /* <c> */ Avance= 1; }
void Produccion_1(void){ Desapilar(); Apilar(3); /* c */ Apilar(2); /* <c> */ Apilar(1); /* <b> */ Avance= 0; }
void Produccion_9(void){ Desapilar(); Apilar(10); /* f */ Apilar(0); /* <a> */ Avance= 1; }
void Produccion_8(void){ Desapilar(); Apilar(5); /* <d> */ Avance= 1; }
void Produccion_6(void){ Desapilar(); Apilar(8); /* a */ Avance= 1; }
void Produccion_2(void){ Desapilar(); Apilar(1); /* <b> */ Apilar(5); /* <d> */ Avance= 1; }
void MaquinaDePila(char *Cad){ char x; x= *Cad; Apilar(11); /*Pila vacia*/ Apilar(0); /*Simbolo inicial de la GIC*/ while(!Error && Pila){ switch(Pila->Dato){ /* Ultimo simbolo en pila */ case 11: /* pila vacia */ Desapilar(); Avance= 0; break; case 0: /* <a> */ switch(x){ case 'c': case 'a': case 'd': case 'b': Produccion_1(); break; case 'e': Produccion_2(); break; default: HayError(); } break; case 1: /* <b> */ switch(x){ case 'c': case 'e': case 'a': case 'd': case 'f': case '\0': Produccion_3(); break; case 'b': Produccion_4(); break; default: HayError(); } break; case 2: /* <c> */ switch(x){ case 'a': case 'd': Produccion_5(); break; case 'c': Produccion_6(); break; default: HayError(); } break; case 3: /* c */ if(x=='c'){ Avance= 1; Desapilar(); }else{ HayError(); } break; case 5: /* <d> */ switch(x){ case 'c': case 'e': case 'b': case 'a': case 'f': case '\0': Produccion_7(); break; case 'd': Produccion_8(); break; default: HayError(); } break; case 7: /* <e> */ switch(x){ case 'e': Produccion_9(); break; case 'c': Produccion_10(); break; default: HayError(); } break; case 8: /* a */ if(x=='a'){ Avance= 1; Desapilar(); }else{ HayError(); } break; case 10: /* f */ if(x=='f'){ Avance= 1; Desapilar(); }else{ HayError(); } break; }/*switch(Pila->Dato)*/ if(Avance){ x= *(++Cad); } }/*ciclo for*/ if(Pila || x){ HayError(); } }/*Maquina de Pila*/
void main() { int Opcion = 1, Tecla; do { do { clrscr(); textcolor(14); gotoxy(38, 1); printf("Pila", 162); textcolor(12); gotoxy(59, 25); printf("Ariel D%caz (2012-0134)", 161); gotoxy(1, 1); textcolor(15); gotoxy(1, 3); printf(Mensaje1); gotoxy(1, 4); printf(Mensaje2 "%co", 164); gotoxy(1, 5); printf(Mensaje3); gotoxy(1, 6); printf(Mensaje4); gotoxy(1, 7); printf(Mensaje5); gotoxy(1, 8); printf(Mensaje6 "%ca", 161); gotoxy(1, 9); printf(Mensaje7); gotoxy(1, 10); printf(Mensaje8); switch(Opcion) { case 1: textbackground(15); textcolor(0); gotoxy(1, 3); printf(Mensaje1); textbackground(0); textcolor(15); break; case 2: textbackground(15); textcolor(0); gotoxy(1, 4); printf(Mensaje2 "%co", 164); textbackground(0); textcolor(15); break; case 3: textbackground(15); textcolor(0); gotoxy(1, 5); printf(Mensaje3); textbackground(0); textcolor(15); break; case 4: textbackground(15); textcolor(0); gotoxy(1, 6); printf(Mensaje4); textbackground(0); textcolor(15); break; case 5: textbackground(15); textcolor(0); gotoxy(1, 7); printf(Mensaje5); textbackground(0); textcolor(15); break; case 6: textbackground(15); textcolor(0); gotoxy(1, 8); printf(Mensaje6 "%ca", 161); textbackground(0); textcolor(15); break; case 7: textbackground(15); textcolor(0); gotoxy(1, 9); printf(Mensaje7); textbackground(0); textcolor(15); break; case 8: textbackground(15); textcolor(0); gotoxy(1, 10); printf(Mensaje8); textbackground(0); textcolor(15); } do Tecla = getch(); while(Tecla != 13 && Tecla != 72 && Tecla != 80); if(Tecla == 72) { if(Opcion == 1) Opcion = 8; else if(Opcion > 1) Opcion--; } else if(Tecla == 80) if(Opcion == 8) Opcion = 1; else if(Opcion < 8) Opcion++; }while(Tecla != 13); switch(Opcion) { case 1: Crear(); break; case 2: Tamagnio(); break; case 3: Apilar(); break; case 4: Desapilar(); break; case 5: Cima(); break; case 6: Vacia(); break; case 7: Mostrar(); break; } }while(Opcion != 8); Salir(); }