rotacion.pas

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

  Ejercicio tomado en el 1er parcial, 16/04/02.
  Escribir un procedimiento ROTACION (var C: cola), el cual
  saca una cierta cantidad de enteros del frente de la cola
  C y los vuelve a insertar en fin de la cola, de tal manera
  que quede en el frente de cola un n\'umero par. Por ejemplo,
  si C = [1, 3, 5, 2, 4] entonces, despu\'es de ROTACION (C),
  debe quedar C = [2, 4, 1, 3, 5].
  keywords: cola

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: rotacion.pas   2002/04/04 17:40 mstorti Exp jdelia $ }

program rotar ;

uses u_colapi ;

type
  cola = colapi;
  
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ROTACION (var C : cola);
begin
  if C.VACIA then exit;

  while C.FRENTE mod 2 = 1 do begin
    C.PONE (C.FRENTE);
    C.QUITA;
  end;
end; { ROTACION }

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  C : cola    ;
  k : integer;
begin
   randomize ();
   C.ANULA;
   for k := 1 to 10 do C.PONE ( random (10) );

   { para asegurarse que haya un elemento par }
   C.PONE (10);

   C.IMPRIME ('C antes: ');
   ROTACION (C);
   C.IMPRIME ('C despues :');

   { Salida tipica:
   C antes   : 3 7 9 3 4 7  1 4 0 3 10
   C despues : 4 7 1 4 0 3 10 3 7 9  3 }
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.