Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2011, 17:53   #1
quearde
Новичок
Джуниор
 
Регистрация: 27.05.2011
Сообщений: 1
По умолчанию Моделирование работы принтера (очередь, динамические структуры)

Задание:
Цитата:
Написать программу, моделирующую использование в компьютерной сети общего принтера.
Очередь формируется из заданий печати, состоящих из 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.
quearde вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамические структуры mego4el Помощь студентам 4 13.02.2011 00:30
Динамические структуры в С++ Aleksa_ks Помощь студентам 0 04.05.2010 21:50
Динамические структуры!!!! Oooooleg Помощь студентам 4 22.05.2009 14:15