Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Список используемых источников. 1. В.И. Ключко, В.И.Лойко, Архитектура вычислительных систем и сетей ЭВМ





 

1. В.И. Ключко, В.И.Лойко, Архитектура вычислительных систем и сетей ЭВМ. Изд. КубГТУ. 2000г.-153с.

2. В.И. Лойко, Методические указания к лабораторным работам. Изд. КубГТУ. 2000г. -25с.

 


Приложения

 

Приложение 1

Листинг программы

Program Kurs;

Uses Crt;

Type

pointer=^pnt;

pnt =record

ptr:pointer;

time:integer;

end;

Var i: integer;

a,prr,pspt,ph,p1,p2,px:pointer;

l,r,N,t,t2,k,k2,v,d,s2,c:integer;

P, Dlit, Short: Integer;

Summ,Tspt,Trr:Integer;

ch:char;

{Процедура добавления заявки}

Procedure push (var px,y:pointer; l:integer);

begin

new(p1);

p1^.ptr:=nil;

if y=nil then

begin

px:=p1;

y:=p1;

y^.time:=l;

end

else

begin

y^.ptr:=p1;

y^.time:=l;

end;

y:=p1;

end;

Begin

Repeat

Clrscr;

Randomize;

{ Число тактов}

Write(' Введите число заявок (100 или 1000) ');

Readln(N);

{ Вероятность прихода заявки}

Write(' Введите вероятность прихода заявки (30% или 60%) ');

Readln(P);

{ Длительность решения задачи}

Write(' Введите длительность решения задачи (0-7) ');

Readln(Dlit);

{ Заявка считается короткой}

Writeln(' Заявка считается короткой (4) ');

{Readln(}Short:=4;{);}

{Заполнение списка заявок}

a:=nil;ph:=nil;p1:=nil;p2:=nil;prr:=nil;pspt:=nil;

v:=0;

c:=0;

Summ:=0;

{ For i:=1 to n do}

Repeat

begin

r:=random(10)+1; {Генерации вероятности прихода заявки}

If r<=(P div 10) {------------------------}

then

begin

l:=random(Dlit)+1; {Генерация длительности заявки}

push(ph,a,l); {Добавление заявки}

inc(v); {Счетчик заявок}

Summ:=Summ+l; {Сумма длинн заявок}

end

else push(ph,a,0); {Заявки нет}

c:=c+1;

end;

Until v=n;

Writeln;

Writeln(' Сумма длин всех заявок: ',Summ);

{;Алгоритм без сортировки}

t:=0;

a:=ph;

k:=0;

i:=1;

s2:=0;

d:=0;

Tspt:=0;

Repeat

If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) }

then

begin

if d<i then

begin

d:=i; {Простой}

inc(s2);

inc(t)

end;

a:=a^.ptr; {Следующая заявка}

end

else

begin

if d<i then

begin

d:=d+a^.time;

inc(t,a^.time);

inc(k);

a:=a^.ptr; {Следующая заявка}

end

end;

inc(i);

Until (a^.ptr=nil); { Заявки кончились}

s2:=n-s2;

If k=0 then k:=1;

Writeln;

Writeln(' Среднее время пребывания заявки в очереди: ',t/k:0:4);

Writeln(' Число тактов процессора: ',d);

{;Алгоритм SPT с сортировкой}

t:=0;

a:=nil;

px:=ph;

k:=0;

i:=1;

s2:=0;

d:=0;

Tspt:=0;

repeat

if (px^.time=0) then

if (a=nil) then

begin

ph:=px^.ptr;

Dispose(px);

px:=ph;

end

else

begin

a^.ptr:=px^.ptr;

Dispose(px);

px:=a^.ptr;

end

else begin

a:=px;

px:=px^.ptr;

end;

Until (a^.ptr=nil);

a:=ph;

Repeat

inc(Tspt);

If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) }

then

begin

if d<i then

begin

d:=i; {Простой}

inc(s2)

end;

a:=a^.ptr; {Следующая заявка}

end

else

begin

if d<i then

begin

d:=d+a^.time; { Считаем число тактов работы алгоритма SPT }

inc(t,a^.time);

inc(k);

a:=a^.ptr; {Следующая заявка}

end

end;

inc(i);

Until (a^.ptr=nil); { Заявки кончились}

s2:=n-s2;

If k=0 then k:=1;

Writeln;

Writeln(' SPT: Среднее время пребывания заявки в очереди: ',t/k:0:4);

Writeln(' Число тактов процессора: ',d);

{;Алгоритм RR}

t:=0;

t2:=0;

s2:=0;

a:=ph;

k:=0;

k2:=0;

i:=1;

d:=0;

Trr:=0;

Repeat

inc(Trr); { Считаем время работы алгоритма RR }

If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) }

then

begin

if d<i then

begin

d:=i;

inc(s2)

end;

a:=a^.ptr; { Следующая заявка}

end

else

if (a^.time>0) and (a^.time<5) {Если длина заявки дольше короткой}

then

begin

if d<i then

begin

d:=d+a^.time;

inc(t,a^.time);

inc(k);

a:=a^.ptr; { Следующая заявка}

end

end

else {Отбрасываем длинную заявку в конец очереди}

begin

if d<i then

begin

d:=d+Short;

p2:=a^.ptr;

inc(t2,a^.time);

inc(k2);

r:=a^.time-Short;

repeat

a:=a^.ptr;

until a^.ptr=nil;

push(ph,a,r);

a:=p2;

end

end;

inc(i);

Until (a^.ptr=nil);

s2:=n-s2;

If k=0 then k:=1;

Writeln;

Writeln(' RR: Среднее время пребывания короткой заявки в очереди: ',t/k:0:4);

Writeln(' Среднее время пребывания длинной заявки в очереди: ',t2/k2:0:4);

Writeln(' Число тактов процессора: ',d);

Writeln;

Writeln('Выход? (Y-Да) ');

Ch:=ReadKey;

Until (Ch='y') or (CH='Y') or (CH='н')or(CH='Н');

End.


Date: 2015-07-25; view: 451; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию