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.