МОДУЛЬ № 5

Begin

Примеры решения задач

Задача 1. Дан файл, элементами которого являются целые числа. Найти среднее арифметическое элементов файла.

В примере решается задача считывания элементов из файла, их суммирование и нахождение среднего арифметического. Предполагается, что типизированный файл уже создан.

Задание. Дополните содержание текста задачи созданием типизированного файла file.dat. Добавленные строчки программы прокомментируйте.

Program Srednee;

Uses

Crt;

Var

Kol,

Element,{переменная для хранения очередного элемента файла}

Summa {переменная для хранения суммы элементов файла}:integer;

f : file of integer;

SrAriph : real

ClrScr;

assign(f,'file.dat');{связываем файловую переменную f с физическим файлом file.dat}

reset(f);{открываем файл для чтения}

Summa :=0;{обнуление суммы}

while not Еof(f) do{просматриваем файл до конца}

begin

read(f,Element);{считываем из файла очередной элемент в переменную Element}

Inc(Kol);{увеличиваем счетчик количества элементов файла}

Inc(Summa,Element);{увеличиваем переменную Summa на Element}

end;

SrAriph := Summa/Kol{вычисляем среднее арифметическое чисел}

write('Среднее арифметическое элементов файла равно ',SrAriph:5:2);

close(f);{закрываем файл}

readln;

End.

Задача 2. Наберите на компьютере текст программы. Сформулируйте решаемую в ней задачу. Дополните необходимыми операторами и комментарием.

Program FileString;

Uses Crt;

Var f, g : file of string;

str1, str : string;

i : integer;

Begin

ClrScr;

assign(f,'f'); rewrite(f);

assign(g,'g'); rewrite(g);

repeat

readln(str); write(f,str);

for i:=length(str) downto 1 do str1:=str1+str[i];

write(g,str1);

str1:='';

until str='';

close(f); close(g);

assign(f,'f'); reset(f);

assign(g,'g'); reset(g);

while not eof(f) do

begin

read(f,str);

writeln(str);

end;

while not eof(g) do

begin

read(g,str); writeln(str);

end;

close(f); close(g);

readln;

End.

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

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

Program TipRecord;

Uses Crt;

Type Dann=record

stag : byte;

Surname, WorkName : string;

Oklad, Year : integer;

End;

Var Spisok : file of Dann; {файл типа записи Dann}

Man : Dann; {переменная типа записи Dann для работы с файлом}

Name : string[12]; {строка для хранения имени физического файла}

Procedure VvodZap (Nomer : integer);

Begin

with Man do

begin

writeln('Введите данные ',Nomer,'-го работника');

write('Фамилия: ');

readln(Surname);

write('Год рождения:');

readln(Уear);

write('Стаж работы:');

readln(stag);

writeln('Должность:');

readln(WorkName);

write('Оклад');

readln(oklad);

write(Spisok ,Man); {записать в файл созданный элемент Man}

end;

End;

Procedure FileVvod;

Var

i, count : Integer;

Begin

write('Введите имя файла данных:');

readln(Name); {имя физического файла}

assign(Spisok ,Name); {связываем файловую переменную с файлом}

rewrite(Spisok ); {открываем файл для записи}

write('Введите количество работников:');

readln(count);

for i:=1 to count do

VvodZap(i); {вызов процедуры ввода очередной информации в файл}

close(Spisok ); {закрываем файл}

readln;

End;

Begin

ClrScr;

FileVvod;

readLn;

End.

Контрольные вопросы

1. Дать определение типизированному файлу и файловой переменной. Опишите формат файловой переменной для типизированных файлов.

2. Перечислить процедуры и функции для работы с файлами. Опишите стандартные процедуры и функции обработки данных типизированного файла.