Команды для типизированных файлов

Чтение из типизированного файла осуществляется по одной компоненте в переменную или переменные, которые должны совпадать по типу с типом компонент файла.

Read (f, x); - чтение из типизированного файла одной компоненты в переменную x.

Read (f, x1, x2,x3, ... xn); - чтение из файла нескольких компонент в переменные.

Write (f, x); - запись в файл значения x. Запись начинается с того места, где был

установлен указатель файла.

Seek (f, n); - для типизированных файлов (прямого доступа) устанавливает

указатель файла на компоненту с номером n.

Eof (f) - функция, определяющая признак конца файла. Принимает значение True,

если указатель текущей позиции файла находится за последним элементом

файла либо файл пустой

Eoln – функция, определяет признак конца строки при считывании строк из

текстовых файлов

Truncate (f); - удаление части файла, начиная с места, где установлен указатель файла.

FilePos (f); - функция, определяет позицию указателя файла.

FileSize (f); - функция, определяет размер файла (число компонент).

Задача 13.1

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

Текст программы к задаче 13.1


Program Ex_12_1;

Uses Crt;

Label A;

Var f2: file of integer;

x: integer; {компонента}

i: integer; {счетчик цикла}

S: integer; {сумма}

Max: integer; {максимум}

k: integer; {номер максимума}

Begin

ClrScr;

Randomize;

Assign(f2, ‘g:\f2.dat’);

{Запись чисел в файл}

Rewrite(f2);

Writeln(‘Исходный файл:’);

Writeln;

For i:=0 to 15 do begin

x:=random(100)-50;

Write(f2, x);

Write(x:3);

End;

{Подсчет суммы нечетных компонент}

Reset(f2);

For i:=0 to 15 do begin

Read(f2, x);

If x mod 2<>0 then

S:=S+x;

End;

Reset(f2);

Read(f2, x);

Max:=x; {Примем первую компоненту за Max}

For i:=1 to 15 do begin


Read(f2, x);

If x>Max then begin

Max:=x; {Поиск Max в файле}

k:=i

End;

Seek(f2, k); {Запись суммы вместо Max в файле}

Write(f2, S); {Вывод результатов}

Writeln(‘Измененный файл:’);

Writeln;

Reset(f2);

While not Eof(f2) do begin

Read(f2, x);

Write(x:3);

End;

Close;

Readln;

End.



Задача 13.2

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

Текст программы к задаче 13.2


Program Ex_12_2;

Uses Crt;

Label A;

Var

f1: file of integer;

x: integer; {компонента}

Otr1, Otr2: integer; {отрицательные}

k1, k2: integer; {номера отриц.}

i: integer; {счетчик цикла}

Begin

ClrScr;

Randomize;

Assign(f1, ‘g:\f1.dat’);

{Запись чисел в файл}

Rewrite(f1);

Writeln(‘Исходный файл:’);

Writeln;

For i:=0 to 15 do begin

x:=random(100)-50;

Write(f1, x);

Write(x:3);

End;

{Поиск первого отрицательного}

Reset(f1);

For i:=0 to 15 do begin

Read(f1, x);

If x<0 then begin

Otr1:=x;

k1:=i;

Goto A;

{Как только нашли, выходим из цикла}

End;

End;

{Поиск последнего отрицательного}

A: Reset(f1);

For i:=0 to 15 do begin

Read(f1, x);

If x<0 then begin

Otr2:=x;

k2:=i;

End;


End;


{Обмен в файле значений местами }

Seek(f1, k1);

Write(f1, Otr2);

Seek(f1, k2);

Write(f1, Otr1);

{Подсчет суммы ком. между k1 и k2}

i:=k1+1;

Repeat

Seek(f1, i);

Read(f1,x);

S:=S+x;

i:=i+1;

Until i<k2;

{Вывод результатов}

Writeln(‘Измененный файл:’);

Writeln;

Reset(f1);

While not Eof(f1) do begin

Read(f1, x);

Write(x:3);

End;

Close(f1);

Readln;

End.



Схема программы к задаче 13.2


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



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