Всем привет
У меня задание реализовать приоритетное невытесняющее планирование процессов (
http://cs.mipt.ru/docs/courses/osstud/03/ch3.htm п.3.5.5), т.е. посчитать среднее время ожидание для него.
Написал программу, но при запуске она тупо виснет, даже не могу посмотреть где ошибка.
Проект прикрепляю к сообщению, посмотрите пжл
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n: integer;
Bu: array[1..20] of integer;
implementation
{$R *.dfm}
procedure priority();
var i,j,max: integer;
B: array[1..10] of integer;
P: array[1..10] of integer;
A: array[1..10] of real;
Wt: array[1..10] of real;
Twt, Awt, w: real;
begin
w:=0;
Twt:=0;
max:=1;
for i:= 1 to n do
begin
B[i] := Bu[i];
B[i]:= strtoint(InputBox('Burst time','Enter CPU burst for process '+ inttostr(i),''));
P[i]:= strtoint(InputBox('Priority','Enter process priority ' +inttostr(i), ''));
if max < P[i] then max := P[i];
end;
j:=1;
while (j<=max) do
begin
i:=1;
while i<=n do
begin
if P[i] = j then
begin
Wt[i]:=w;
w:= w+B[i];
end;
end;
end;
for i:= 1 to n do
begin
Twt:=Twt+Wt[i];
Awt:=Twt/n;
end;
ShowMessage(floattostr(Awt));
end;
procedure TForm1.Button1Click(Sender: TObject);
var k:integer;
begin
n:= strtoint(InputBox('number of processes','Enter number of processes',''));
for k:= 1 to n do
begin
Bu[k]:= strtoint(InputBox('Burst time','Enter CPU burst' + inttostr(k),''));
end;
priority();
end;
end.