Esempio n. 1
0
 void Produccion_5(void){
   Desapilar();
   Apilar(1); /* <b> */
   Apilar(8); /* a */
   Apilar(5); /* <d> */
   Avance= 0;
 }
Esempio n. 2
0
 void Produccion_4(void){
   Desapilar();
   Apilar(7); /* <e> */
   Apilar(5); /* <d> */
   Apilar(2); /* <c> */
   Avance= 1;
 }
Esempio n. 3
0
 void Produccion_1(void){
   Desapilar();
   Apilar(3); /* c */
   Apilar(2); /* <c> */
   Apilar(1); /* <b> */
   Avance= 0;
 }
Esempio n. 4
0
 void Produccion_9(void){
   Desapilar();
   Apilar(10); /* f */
   Apilar(0); /* <a> */
   Avance= 1;
 }
Esempio n. 5
0
 void Produccion_8(void){
   Desapilar();
   Apilar(5); /* <d> */
   Avance= 1;
 }
Esempio n. 6
0
 void Produccion_6(void){
   Desapilar();
   Apilar(8); /* a */
   Avance= 1;
 }
Esempio n. 7
0
 void Produccion_2(void){
   Desapilar();
   Apilar(1); /* <b> */
   Apilar(5); /* <d> */
   Avance= 1;
 }
Esempio n. 8
0
  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();
}