![](/user_photo/_userpic.png)
Задание № 4
Написать программу, которая считывает из файла kn202mnn .note все данные и выводит на экран в виде таблицы, выполненной по образцу таблицы 1.
Таблица 1. – Образец таблицы для четвертого пункта задания
Фамилия |
Имя |
Отчество |
Пол |
Возраст |
Гураков |
Алексей |
Валерьевич |
М |
39 |
Мещеряков |
Павел |
Сергеевич |
М |
35 |
… |
… |
… |
… |
… |
Описание:
В программе описана запись Homme type Homme = record, а также вспомогательная запись date type date = record для хранения дня рождения студента и подсчета его возраста в четвертом задании.
В программе объявляются все необходимые переменные, типизированный файл f: file of Homme; ассоциируется с файлом assign (f, 'kn202mnn.note'); в том же каталоге, что и программа, открывается на чтение командой reset (f);.
Чтение из файла организовано с помощью цикла while not eof (f) do, в котором происходит также вычисление возраста студента по формуле 2021 - Birthday.year
Перед циклом выводится отформатированный заголовок. Остальное форматирование производится непосредственно на месте вывода записи на экран.
Затем файл закрывается close (f);.
Код программы:
type
date = record
month: 1..12;
day: 1..31;
year: smallint
end;
type
Homme = record
Familiya: string[20];
Name: string[20];
Otchestvo: string[20];
Birthday: date;
sex: char;
end;
var
note: Homme;
f: file of Homme;
age: integer;
currentdate: date;
begin
write('Введите текущий год в формате ГГГГ : ');
readln(currentdate.year);
write('Введите текущий месяц: ');
readln(currentdate.month);
write('Введите текущий день: ');
readln(currentdate.day);
assign(f, 'kn202mnn.note');
reset(f);
writeln('----------------------------------------------------------------');
writeln('| ', 'Фамилия':10, '| ':7,'Имя':10,'| ':7, 'Отчество':9,'|':7, 'Пол', '|','Возраст','|');
writeln('----------------------------------------------------------------');
while not eof (f) do
begin
read(f, note);
age:= currentdate.year - note.Birthday.year;
if ((note.Birthday.month > currentdate.month) or ((note.Birthday.month = currentdate.month) and (note.Birthday.day > currentdate.day))) then
age:= age - 1;
writeln('| ', note.Familiya:0, ' ': (15 - length(note.Familiya)), '| ', note.Name,
' ': (15 - length(note.Name)), '| ', note.Otchestvo:0, ' ': (15 - length(note.Otchestvo)),
'| ', note.sex, ' ': (2 - length(note.Sex)), '| ', age: 3, ' |');
writeln('----------------------------------------------------------------');
end;
close(f);
end.
Результаты работы программы:
Результат работы программы по заданию 4
Выводы:
Результат записи данных в файл из задания № 3 полностью восстановлен и выведен на экран в виде таблицы 1.
Список литературы
Острейковский В. А. Информатика : учебник для вузов / В. А. Острейковский. — М. : Высш. шк., 1999.
Вирт Н. Алгоритмы и структуры данных / Н. Вирт. — М. : Мир, 1989.
Епанешников А. М. Программирование в среде Turbo Pascal 7.0 / А. М. Епанешников, В. А. Епанешников. — 3-е изд., стер. — М. : ДИАЛОГ-МИФИ, 1996.
Культин Н .Б. Turbo Pascal в задачах и примерах / Н. Б. Культин. — СПб.: БХВ-Петербург, 2000.
Немнюгин С. А. Turbo Pascal / С. А. Немнюгин. — СПб. : Питер, 2000.
Шпак Ю. А. Turbo Pascal 7.0 на примерах / Ю. А. Шпак ; под ред. Ю. С. Ковтанюка. — Киев : Юниор, 2003.