Помогите исправить ошибку и доделать программу, которая создает файл и выводит данные из матриц в 10 таблиц, программа наглядно показывает прохождение заявок к процессору. Должно быть двадцать заявок, одна очередь, длина заявок меняется от трёх до семи, при этом квант процессора равен пяти, это означает, если на процессор приходит заявка, длина, которой больше пяти, значит процессором, обрабатывается пять тактов, а оставшиеся идут в конец очереди. Сначала пытался сделать эту задачу с помощью классов в Delphi, но мне посоветовали сделать гораздо проще т.е через массивы. Только работает она у меня не так как надо.Код | program RR; const q=5;{квант процессора} var f1:text; i,j,l,t,k,x:byte; p:array[1..250] of Byte;{состояние очереди} o:array[1..250,1..20] of Byte; begin randomize; Assign(f1,'RoundRobin.txt'); Rewrite(f1); Close(f1); Assign(f1,'RoundRobin.txt'); Append(f1); for x:=1 to 10 do begin l:=0; k:=0; for i:=1 to 250 do begin p[i]:=0; for j:=1 to 20 do o[i,j]:=0; end; t:=1; writeln(f1); writeln(f1,' Таблица № ',x); writeln(f1); writeln(f1,'Номер такта Состояние процессора Состояние очереди'); for i:= 1 to 250 do begin for j:= 1 to 20 do if o[i-1,j] <> 0 then o[i,j]:=o[i-1,j]; j:=1; while o[i,j] <> 0 do j:=j+1; if (t=1) or (i=1) then If k < 20 then begin o[i,j]:=k+1; k:=k+1; end; if (o[i,j]=0)and (j>1) then j:=j-1; t:=t-1; if l=0 then begin p[i]:=o[i,j]; o[i,j]:=0; end else p[i]:=p[i-1]; if l=0 then l:=random(5)+3; l:=l-1; if t=0 then t:=x; if i < 10 then write(f1,' ',i,' | ') else if i<100 then write(f1,' ',i,' | ') else write (f1,' ',i,' | '); if p[i] <> 0 then if p[i] <10 then write(f1,p[i],' | ') else if p[i] <100 then write (f1,p[i],' | ') else write (f1 ,p[i],' | ') else write (f1,' | '); for j:=1 to 20 do if o[i,j] <> 0 then write(f1,o[i,j],','); writeln(f1); if (k=20) and (p[i]=0) and (p[i-1] <> 0) then i:=250; end; end; close(f1);
end.
|
нужно, чтобы в графе состояние процессора заявки шли в порядке очереди т.е сначала первая, затем вторая, а не хаотично. Помогите плзз.
|