Министерство науки и высшего образования Российской Федерации ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра телекоммуникаций и основ радиотехники (ТОР)
по дисциплине «Информатика-2»
Вариант № 10
Выполнил студент
направления подготовки 11.03.02
15.03.2021г.
(дата)
Оглавление
Написать программу, которая создает типизированный файл Type = Boolean и записывает в него 19 x 17 значений. Имя для файла kn202mnn .dan.
Описание:
В программе объявляются все необходимые переменные целого и булевого типов, типизированный файл f: file of boolean; ассоциируется с файлом assign (f, 'kn202mnn.dan'); в том же каталоге, что и программа, открывается на запись командой rewrite (f);.
Получение M x N значений булевого типа организовано с помощью 2 циклов для удобства решения задания 2. Тоже самое можно было сделать и в одном цикле: от 1 до M x N. Затем файл закрывается close (f);.
Сами булевы значения получены с помощью вычисления остатка от деления целого числа в диапазоне от 0 до 999 на 2: если число делится без остатка, то присваиваем True, иначе – False. Можно было бы написать, просто random, так как это не тема лабораторной работы.
Код программы:
program z_01;
var
f: file of boolean;
M, N: integer;
c: boolean;
begin
M := 19;
N := 17;
assign(f, 'kn202mnn.dan');
rewrite(f);
randomize;
for var i:= 1 to M do
for var j := 1 to N do
begin
if (random(1000) mod 2) = 0 then c := true else c := false;
write(f, c);
end;
close(f);
end.
Результаты работы программы:
Результат работы программы представлен на рисунке 1.
Выводы:
Значения логического типа Boolean занимают 1 байт и принимают одно из двух значений, задаваемых предопределенными константами True (истина) и False (ложь). 19 x 17 = 323 значения, 323 байта.
Написать программу, которая создает массив A[19, 17] и заполняет его значениями из файла, созданного первой программой. Вывести на экран массив в виде матрицы 19 x 17.
Описание:
В программе объявляются все необходимые переменные целого и булевого типов, типизированный файл f: file of boolean; ассоциируется с файлом assign (f, 'kn202mnn.dan'); в том же каталоге, что и программа, открывается на чтение командой reset (f);.
Заполнение двумерного массива А[19, 17] значений булевого типа организовано с помощью 2 циклов, в которых происходит одновременно заполнение массива read(f, A[i,j]); и вывод его на экран write(A[i,j]:6); с параметрами форматирования. Команда writeln(); отвечает за создание новой строки. Затем файл закрывается close(f);.
Код программы:
program z_02;
var
f: file of boolean;
M, N: integer;
A: array [1..19, 1..17] of boolean;
begin
M := 19;
N := 17;
assign(f, 'kn202mnn.dan');
reset(f);
for var i := 1 to M do
begin
for var j := 1 to N do
begin
read(f, A[i,j]);
write(A[i,j]:6);
end;
writeln();
end;
close(f);
end.
Результаты работы программы:
Выводы:
На экран вывелся массив в виде матрицы 19 х 17 из случайных значений True и False, созданных предыдущей программой.
В следующей программе описать запись Homme, которая используется для описания человека (поля: Имя, Отчество, Фамилия, дата рождения, пол). Создать файл типа Homme с именем kn202mnn.note и записать в него не менее 10 записей. Первая запись должна описывать студента, выполняющего работу.
Описание:
В программе описана запись Homme type Homme = record , а также вспомогательная запись date type date = record для хранения дня рождения студента и подсчета его возраста в четвертом задании.
В программе объявляются все необходимые переменные целого типа, массив note типа Homme, типизированный файл f: file of Homme; ассоциируется с файлом assign (f, 'kn202mnn.note'); в том же каталоге, что и программа, открывается на запись командой rewrite(f);.
Для добавления записи Homme одной строкой создана процедура addHomme, которая принимает следующие параметры:
id – типа integer (целый тип) для номера записи;
fam, nam, otch – типа string[20] строковый тип фиксированного размера для фамилии, имени и отчества студента;
d, m, y – целые типы для даты (день, месяц, год);
s – типа char (один символ) для пола.
Запись в файл организована с помощью 1 цикла. Затем файл закрывается close (f);.
Код программы:
program z_03;
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
L: shortint;
note: array [1..10] of Homme;
f: file of Homme;
procedure addHomme(id: shortint; fam, nam, otch: string[20]; d, m: shortint; y: smallint; s: char);
begin
note[id].Familiya := fam;
note[id].Name := nam;
note[id].Otchestvo := otch;
note[id].sex := s;
note[id].Birthday.day := d;
note[id].Birthday.month := m;
note[id].Birthday.year := y;
end;
begin
L := 10;
addHomme(1, 'Михайлов', 'Николай', 'Николаевич', 6, 12, 1981, 'М');
addHomme(2, 'Иванов', 'Иван', 'Иванович', 3, 12, 1986, 'М');
addHomme(3, 'Шашков', 'Илларион', 'Олегович', 2, 7, 2000, 'М');
addHomme(4, 'Кулаков', 'Юлий', 'Проклович', 29, 7, 2001, 'М');
addHomme(5, 'Одинцова', 'Ульна', 'Константиновна', 17, 1, 2000, 'Ж');
addHomme(6, 'Лапина', 'Капитолина', 'Иосифовна', 15, 3, 2001, 'Ж');
addHomme(7, 'Юдина', 'Данута', 'Кимовна', 25, 12, 2001, 'Ж');
addHomme(8, 'Кузьмина', 'Веста', 'Антоновна', 19, 1, 2000, 'Ж');
addHomme(9, 'Никитина', 'Доминика', 'Игнатьевна', 11, 6, 2000, 'Ж');
addHomme(10, 'Орехова', 'Архелия', 'Альвиановна', 2, 9, 2001, 'Ж');
assign(f, 'kn202mnn.note');
rewrite(f);
for var j := 1 to L do
write(f, note[j]);
close(f);
end.
Результаты работы программы:
Выводы:
Файл содержит как читаемые символы, так и NULL – дополнение до фиксированной длины в 20 символов.
Написать программу, которая считывает из файла 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