pila2.pas

{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION

  Tareas simples sobre el TAD-PILA. 

  FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ Tareas simples sobre un TAD-PILA. 
  La pila inicial P0 es la misma en las tareas a-e:

  P0 = [ 18  34  9  14  26  5 ];

  donde el tope de la pila esta hacia a la izquierda.

  Tarea 2a: asignar 0 al segundo elemento desde el tope de 
            la pila P0, y dejarla sin sus dos primeros 
            elementos. Queda:

            P1 = [ 0  9  14  26  5 ];

  Tarea 2b: asignar 0 al segundo elemento desde el tope de
            la pila P0, sin modificarla. Para eso, 
            vamos descargando la pila P0, hasta el lugar 
            apropiado, y los vamos pasando a la pila auxiliar

            Q = [ 18 34 ].

            Esta pila auxiliar Q la usamos para recordar, en
            forma selectiva, a los elementos desapilados (es
            decir, descartando los que no nos interesan). Luego 
            de desapilar P convenientemente, le introducimos 
            el nuevo item 0 y volvemos apilar los elementos
            remanentes, quedando:

            P2 = [ 18  0  9  14  26  5 ];

  Tarea 2c: asignar 0 al elemento ubicado en la posicion n=4, 
            contada desde el tope de la pila P0, dejandola sin
            sus 4 elementos superiores. Queda:

            P3 = [ 0 26 5 ];

  Tarea 2d: asignar 0 al elemento fondo de la pila P0, dejandola
            sin sus elementos superiores. Queda:

            P4 = [ 0 ];

  Tarea 2e: asignar 0 al elemento fondo de la pila P0, dejando
            el resto de los elementos sin modificar.
            Otra vez usamos la pila auxiliar Q en la misma
            forma que en la tarea 2b, quedando:

            P5 = [ 18  34  9  14  26  0 }

  keywords: pila

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: pila2.pas  2002/04/10 7:10 jdelia Exp jdelia        $}

program  tareas_simples_pila ;

uses u_pilapi ;

type
  pila = pilapi;

var
  P, Q	: pila ;
  x	: tipo_elemento ;
  k,n	: integer ;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
begin
  writeln ;
  writeln (' Tareas simples sobre una pila ');

  writeln ;
  writeln (' tarea 2a: ');
  P.ANULA ;

  P.METE ( 5);
  P.METE (26);
  P.METE (14);
  P.METE ( 9);
  P.METE (34);
  P.METE (18);

  P.SACA ; {descarta el tope en P}
  P.SACA ; {descarta el tope en P}
  P.METE (0);

  P.IMPRIME ('pila actual');

  writeln ;
  writeln (' tarea 2b: ');

  P.ANULA ;
  Q.ANULA ;

  P.METE ( 5);
  P.METE (26);
  P.METE (14);
  P.METE ( 9);
  P.METE (34);
  P.METE (18);

  x := P.TOPE; 
  Q.METE (x);
  P.SACA ; {descarta el tope en P}
 
  P.SACA ; {descarta el tope en P}
  P.METE (0);

  x := Q.TOPE; 
  P.METE (x);

  P.IMPRIME ('pila P');

  writeln ;
  writeln (' tarea 2c: ');
  P.ANULA ;
  P.METE ( 5);
  P.METE (26);
  P.METE (14);
  P.METE ( 9);
  P.METE (34);
  P.METE (18);
  n := 4 ; {un lugar preciso dentro de la pila}
  for k := 1 to (n) do begin
    P.SACA ;  {descarta n-topes en p}
  end ; {for}
  P.METE (0);
  P.IMPRIME (' pila P');

  writeln ;
  writeln (' tarea 2d: ');
  P.ANULA ;
  P.METE ( 5);
  P.METE (26);
  P.METE (14);
  P.METE ( 9);
  P.METE (34);
  P.METE (18);
  while not P.VACIA do begin
    P.SACA ;  {descarta n-topes en p}
  end ; {while}
  P.METE (0);
  P.IMPRIME (' pila P'); 

  writeln ;
  writeln (' tarea 2e: ');
  P.ANULA ;
  Q.ANULA ;
  P.METE ( 5); {n=1}
  P.METE (26); {n=2}
  P.METE (14); {n=3}
  P.METE ( 9); {n=4}
  P.METE (34); {n=5}
  P.METE (18); {n=6}

  while not P.VACIA do begin
    x := P.TOPE ;
    Q.METE (x);
    P.SACA ;
  end ; {for}
   
  P.METE (0);
  Q.SACA ; {descarta tope en Q}
  while not Q.VACIA do begin
    x := Q.TOPE ;
    P.METE (x);
    Q.SACA ;
  end ; {while}
  P.IMPRIME ('pila P');

end .
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.