Задача 53-г. Глупый винчестер.

Здравствуйте Олег Виленович!Что-то долго я силился понять что нужно сделать в этом задании.Значит так,начальное положение головки считаем за 0,считываем из файла сначала период проверки очереди,затем строки с цифрами это будут номера дорожек.Перемещение головки от начальной до следующей равно 1 кванту+1 квант на чтение/запись дорожек.Например нужно переместиться с 0 до 10 дорожки и с 10 до 5.Значит время передвижения головки от начальной точки до нужной дорожки и чтение/запись с них будет равно 17 квантам(15 на передвижение головки,2 на чтение/запись данных с дорожек,по 1-ому обороту на каждую).По истечении периода добавляем в очередь новые числа(дорожки) если конечно они не закончились.
Если я правильно понял задание,то исходя из выше сказанного вот что у меня получилось:
Проверьте правильность решения и понимания задания.
Если я правильно понял задание,то исходя из выше сказанного вот что у меня получилось:
- Код: Выделить всё
var
start,track:byte;
i,timeout,n:byte;
que:string;
kwant:integer;
f:text;
begin
assign(f,'C:\Files for Program Pascal\Disk.in');
reset(f);
read(f,timeout);
readln(f);
kwant:=0; start:=0;
que:='';
while not eoln(f) do begin
read(f,n);
que:=que+chr(n);
end;
readln(f);
while length(que)>0 do begin
track:=ord(que[1]);
if track>start then
for i:=start+1 to track do begin
inc(kwant);
if (kwant mod timeout=0) and (not eof(f)) then begin
while not eoln(f) do begin
read(f,n);
que:=que+chr(n);
end;
readln(f);
end;
end
else if track<start then
for i:=start-1 downto track do begin
inc(kwant);
if (kwant mod timeout=0) and (not eof(f)) then begin
while not eoln(f) do begin
read(f,n);
que:=que+chr(n);
end;
readln(f);
end;
end;
delete(que,1,1);
inc(kwant);
if (kwant mod timeout=0) and (not eof(f)) then begin
while not eoln(f) do begin
read(f,n);
que:=que+chr(n);
end;
readln(f);
end;
start:=i;
end;
close(f);
writeln(kwant);
readln;
end.
Проверьте правильность решения и понимания задания.