Задание:
Цитата:
Написать программу, моделирующую использование в компьютерной сети общего принтера.
Очередь формируется из заданий печати, состоящих из n – страниц текстового или графического материала.
Задания на печать "поступают из сети" через моменты времени, лежащие в интервале от a1 до a2 минут (генерируется с использованием генератора случайных чисел).
Объемы печати также представляют собой случайное число в интервале от b1 до b2 страниц.
Вероятность появления в запросе цветной печати равна 20%.
Скорость печати принтером битовых изображений составляет N1 страниц в минуту, цветных – N2 страниц в минуту.
Организовать функцию, осуществляющую подсчет максимального времени ожидания задания в очереди (например, из всех заданий, поступивших на печать в течение ближайшего часа).
|
вот небольшая реализация, сделано формирование очереди, но никак не могу сделать вывод, просто вывод следующего элемента и удаление предыдущего, в оформленном виде сделать то не беда, а вот именно следующий элемент вывести не могу
Код:
program spis;
uses crt;
const
b1=20;
b2=50;
type
list=^element;
element=record
kolstr:integer;
cvet:boolean;
next:list;
end;
var
head,adres:list;
x,i:integer;
temp:list;
procedure add(var head:list); //добавление в очередь
var
nov:list;
r:integer;
begin
new(nov);
randomize;
nov^.kolstr:=random(b2-b1);
r:=random(101);
if r<=20 then nov^.cvet:=true else nov^.cvet:=false;
nov^.next:=nil;
if head=nil then head:=nov else
begin
temp:=head;
while temp^.next<>nil do temp:=temp^.next;
temp^.next:=nov;
end;
end;
procedure print(head:list; var adres:list);
begin
temp:=head;
writeln(temp^.kolstr);
adres:=temp^.next;
end;
procedure search(head:list; a:integer; var adres:list); //на всякий случай
begin
adres:=nil;
temp:=head;
while temp<>nil do
begin
if temp^.kolstr=a then adres:=temp;
temp:=temp^.next;
end;
end;
procedure delete(head:list; a:integer); //на всякий случай, очистка памяти, когда задание уйдет из печати"
begin
if adres=nil then writeln('Net pechati')
else begin
temp:=head;
while temp^.next<>adres do
temp:=temp^.next;
temp^.next:=adres^.next;
dispose(adres);
end;
end;
procedure sec(k:integer); //задержка
var i:integer;
begin
for i:=1 to k do delay(40000);
end;
begin
clrscr;
repeat
add(head);
print(head,adres);
sec(3);
until keypressed;
end.