parimpa.pas

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

  Escribir un procedimiento ENCOLAR_TRABAJO que, dado un
  c\'odigo de trabajo $n$ lo pone o bien en la cola $par$,
  o bien en la cola $impar$, dependiendo del n\'umero.
  Escribir un procedimiento SIGUIENTE_TRABAJO que obtiene el
  siguiente trabajo a procesar, dando mayor prioridad a la
  cola $par$. keywords: cola

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: parimpa.pas  2002/04/05 16:00 mstorti Exp jdelia    $}

program  parimpar;

uses u_colapi;

const
  nmax = 20 ;

type
  cola = colapi;

{ descomentar para probar cola por arreglos }
{ uses u_colaai ;
type
  cola = colaai; }

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ENCOLAR_TRABAJO (        x: integer;
			   var   par: cola;
			   var impar: cola);
begin
  if (x mod 2 = 0) then
     par.PONE (x)
  else begin
     impar.PONE (x)
  end ; {if}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function SIGUIENTE_TRABAJO (var     x: integer;
			    var   par: cola;
                            var impar: cola): boolean;
begin
  SIGUIENTE_TRABAJO := true;
  if      ( not par.VACIA ) then
     begin
     x :=  par.FRENTE;
     par.QUITA
     end
   else if (not impar.VACIA ) then
     begin
     x := impar.FRENTE;
     impar.QUITA
     end
   else begin
     writeln ('No hay mas trabajos en las colas');
     SIGUIENTE_TRABAJO := false
   end ; {if}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  par, impar : cola;
  a          : integer;
begin
  par.ANULA;
  impar.ANULA;

  for a := 1 to nmax do ENCOLAR_TRABAJO (a, par, impar);
   
  while SIGUIENTE_TRABAJO (a, par, impar) do begin
    writeln ('trabajo  ', a);
  end ; {while}

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

Generated by GNU enscript 1.6.1.