Тема: ФАЙЛЫ (типизированные файлы)
Цель работы: освоение приемов объявления файлов и овладение навыками обработки типизированных файлов.
Образцы решения задач.
Задача № 1. Пусть задан файл целых чисел. Из исходного файла создайте новый файл из положительных элементов, кратных 3.
Входные данные.
<Исходный> файлцелых чисел – f.
Выходные данные.
<Результирующий> файлположительных элементов, кратных 3 – g.
Алгоритм.
1. Создать <Исходный> файл целых чисел.
2. Создать <Результирующий> файл из положительных элементов, кратных 3.
3. Вывести на печать <Результирующий> файл.
Текст программы
Модуль 1.
unit op;
Interface
Type
tFileOfInt= file of integer;
Implementation
End.
Модуль 2.
unit obrabotka;
Interface
uses op;
procedure sozdanie_ff(var ff: tFileOfInt);
procedure sozdanie_gg(var ff, gg: tFileOfInt);
procedure printFile(var gg: tFileOfInt);
Implementation
procedure sozdanie_ff(var ff: tFileOfInt);
Var
number: integer; // буферная переменная
ch: char; // ответ на вопрос
Begin
// открываем файл
Assign(ff, ’IntFile.dat’); // связали файловую переменную с файлом на диске
|
|
ReWrite(ff); // создаем новый файл
// заполняем файл
ch:=’y’;
while ch in [’y’, ’д’] do begin // пока не введем другую букву
WriteLn(’Введите число ’);
ReadLn(number);
Write(ff, number); // запись элемента в файл
WriteLn(’Будете еще вводить данные, если “да”, то наберите “y” или “д” ’);
ReadLn(ch);
end;
// закрываем файл
Close(ff);
end;
procedure sozdanie_gg(var ff, gg: tFileOfInt);
Var
number: integer; // буферная переменная
Begin
// открываем файлы
Assign(gg, ’ResultFile.dat’); // связали файловую переменную с файлом на диске
ReWrite(gg); // создаем новый файл
Assign(ff, ’IntFile.dat’); // связали файловую переменную с файлом на диске
ReSet(ff); // повторно открываем файл
//
while not EOF(ff) do begin // пока не конец файла ff
Read(ff, number); // чтение записи из файла
if (number>0) and (number mod 3=0) then // положительное число кратное 3
Write(gg, number) // записали в результирующий файл gg
end;
// закрываем файл
close(ff);
close(gg);
end;
procedure print_gg(var ff: tFileOfInt);
Var
number: integer;
Begin
// открываем файл
Assign(ff, ’ResultFile.dat’); // связали с новым файлом
ReSet(ff); // повторно откроем файл
//
while not EOF(ff) do begin // пока не конец файла
Read(ff, number); // считали число
WriteLn(’Очередное число: ’, number) // вывели его
end;
// закрыли файл
Close(ff);
end;
End.
Основная программа.
Uses
op, obrabotka;
Var
f, g: tFileOfInt;
Begin
sozdanie_ff(f); // заполнили исходный файл
printFile(f); // вывели исходный файл
sozdanie_gg(f, g); // заполнили результирующий файл
printFile(g); // вывели результирующий файл
End.
Задача № 2. Имеются данные о нескольких линиях электропередач (ЛЭП): шифр, напряжение, протяженность, год ввода в действие, дата последних линейных работ. Требуется выдать справку о ЛЭП, введенных в действие более 10-ти лет назад, а также выдать сведения о ЛЭП минимальной протяженности.
|
|
Постановка задачи.
Сведения о ЛЭП занесем в типизированный файл. Каждый элементами файла – запись такой же структуры, как и в разобранной задаче лабораторной работы № 9.
Алгоритм.
1. Заполнение файла сведений о ЛЭП.
2. Вывод сведений о ЛЭП, введенных в действие более 10-ти лет назад.
3. Нахождение ЛЭП минимальной протяженности.
4. Вывод сведений о ЛЭП минимальной протяженности.
Текст программы