Вобщем в универе дали такое задание. Приоритеты относительные.
Я уже вторую неделю пишу и вот что получилось
Code
begin
t:=0;
vipoln:=false;
znach:=0;
for i:=1 to 10 do
mas[i]:=0;
while not vipoln do
begin
label1.Caption:=inttostr(t);
for i:=1 to 10 do
if procesi[i].postyp=t then
begin
mas[i]:= procesi[i].prioritet; //пишем приоритет совпавшего времени
procesi[i].postyp:=procesi[i].postyp+1; // подготавлюем процессов к следуещему кванту времени
end;
for i:=1 to 10 do
if znach<mas[i] then
begin
znach:=mas[i];
max:=i;
end; // находим номер элемента с найбольшим приоритетом
procesi[max].dlitelnost:= procesi[max].dlitelnost-1; // уменшаем длительность
if procesi[max].dlitelnost=0 then
procesi[max].postyp:= procesi[max].postyp-1; // проверяем процесс закончен или нет
if procesi[max].dlitelnost=0 then
StringGrid1.Cells[4,max]:=inttostr(t); // записуем время если процесс кончился
pusto:=0;
for i:=1 to 10 do
if not (StringGrid1.Cells[4,i]='') then
pusto:=pusto+1; // есть ли не законченый процесс
if pusto=10 then
vipoln:=true; // конец цикла выполнения
t:=t+1;
end;
end;
Тут вроде теоритически все правильно, но с цикла оно выходить не хочет(