Процедура seek

Процедура seek(f,n) устанавливает указатель в открытом файле f на компонент с номером n (нумерация компонентов идет от 0). Затем значение компонента может быть считано.

Пример 4. На диске Е в каталоге АВС есть файл целых чисел а2.int. Необходимо поменять местами его максимальный и минимальный элементы.

Ниже приведены два варианта этой программы. В первом после считывания компонентов файла в массив происходит поиск минимального и максимального элементов массива и их индексов. Затем максимальное и минимальное значение перезаписываются в файл.

Вторая программа работает по другому алгоритму. Организован один цикл, в котором очередное значение считывается в переменную. Здесь же осуществляется поиск минимального и максимального элементов среди компонентов файла и их индексов. Затем происходит перезапись в файл максимального и минимального значений.


Вариант 1:

program var_1;

Var

f: file of integer;

i,max, nmax, min, nmin:integer;

a: array [0..200] of integer;

Begin

assign (f,’e:\abc\a2.int’);

reset (f);

{Считываем компоненты файла в массив а.}

f or i:=0 to filesize (f)-1 do read (f,a[i]);

{Начальное присваивание максимального и}

{Минимального элементов массива и их индексов}

Max:=a[0]; nmax:=0;

Min:=a[0]; nmin:=0;

{Оновной цикл для поиска максимального и}

{минимального элементов массива и их

индексов}

for i:=1 to filesize(f)-1 do

Begin

If a[i]>max then

begin

max:=a[i];

nmax:=i

end;

if a[i]<min then

begin

min:=a[i];

nmin:=i

end;

end;

{Перезапись максимального и

минимального значений в файл}

seek (f,nmax);

write (f,min);

seek (f,nmin);

write (max);

close (f)

End.

Вариант 2:

program var_2;

Var

f:=file of integer;

a, i, max, nmax, min, nmin:integer;

Begin

assign (f,’e:\abc\a12.int’);

reset (f);

for i:=0 to filesize (f)-1 do

begin

read (f,a);

if i:=0 then

{Начальное присваивание максимального и}

{минимального значений и его индекса}

begin

Max:=a; nmax:=I;

Min:=a; nmin:=I;

end

Else

Begin

{Сравнение текущего значения с

максимальным (минимальным)}

If max<a then

begin

Max:=a;

Nmax:=i

end;

if min>a then

Begin

Min:=a;

Nmin:=i

end;

end;

end;

{Перезапись максимального и

минимального значений в файл}

seek (f,nmax);

write (f,min);

seek (f,nmin);

write (f,max);

End.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: