Ч2 ИПР1 В5 / ИПР1
.docxБЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ФИНО
Специальность ПОИТ
Индивидуальная практическая работа № 1
по дисциплине «Основы алгоритмизации и программирования»
часть 2
Вариант № 5
Выполнил студент: Бордон Е.С.
группа 991051
Зачетная книжка № 99105004
Минск 2020
Задание:
В программе предусмотреть сохранение вводимых данных в типизированный файл и возможность чтения из ранее сохраненного типизированного файла. Результаты выводить на экран и в текстовый файл.
5. Информация об участниках спортивных соревнований содержит название команды, ФИО игрока, возраст. Вывести информацию о спортсменах, возраст которых не достиг 18 лет.
Листинг:
program IPW_1;
uses crt;
type
Tsport = record
Fteam: string [15]; // Название команды
Fname_1: string [30]; // Ф
Fname_2: string [30]; // И
Fname_3: string [30]; // 0
Fdate: double; // Возраст
end;
Var
Mas: array [1..20] of Tsport;
f:text;
Zap: Tsport;
n: integer;
v: integer;
procedure vvod; // Ввод данных в текстовый файл
var
i: integer;
begin
Assign (f,'IPW1.txt');
Rewrite (f);
writeln;
writeln ('Введите количество записей:');
readln (n);
for i:=1 to n do
begin
writeln ('Введите ',i,' запись');
writeln ('Введите название команды:');
readln (Zap.Fteam);
writeln ('Введите фамилию игрока:');
readln (Zap.Fname_1);
writeln ('Введите имя игрока:');
readln (Zap.Fname_2);
writeln ('Введите отчество игрока:');
readln (Zap.Fname_3);
writeln ('Введите возраст участника:');
readln (Zap.Fdate);
writeln;
writeln (f, i, ' ', Zap.Fteam, ' ', Zap.Fname_1, ' ', Zap.Fname_2, ' ', Zap.Fname_3, ' ', Zap.Fdate);
end;
close (f);
end;
procedure reading; // Чтение текстового файла и вывод значений на экран
var i:integer;
s:string;
begin
assign(f,'IPW1.txt');
reset(f);
writeln;
writeln(' ___________________________________________________________');
writeln('| № | Команда | Фамилия | Имя | Отчество | Возраст |');
writeln('|___________________________________________________________|');
while not (eof(f)) do
begin
readln(f,s); // Считываем строку
s:=trim(s)+' '; // Убираем пробелы
while pos(' ',s)>0 do // Удаляем лишние пробелы
delete(s,pos(' ',s),1);
i:=strtoint(copy(s,1,pos(' ',s)-1)); // Номер
delete(s,1,pos(' ',s));
mas[i].Fteam:=copy(s,1,pos(' ',s)-1); // Название команды
delete(s,1,pos(' ',s));
mas[i].Fname_1:=copy(s,1,pos(' ',s)-1); // Фамилия
delete(s,1,pos(' ',s));
mas[i].Fname_2:=copy(s,1,pos(' ',s)-1); // Имя
delete(s,1,pos(' ',s));
mas[i].Fname_3:=copy(s,1,pos(' ',s)-1); // Отчество
delete(s,1,pos(' ',s));
mas[i].Fdate:=strtoint(copy(s,1,pos(' ',s)-1)); // Возраст
writeln('|',i:3,'|',mas[i].Fteam:13,'|',mas[i].Fname_1:13,'|',mas[i].Fname_2:13,'|',mas[i].Fname_3:14,'|',mas[i].Fdate:9,'|');
end;
writeln(' __________________________________________________________');
writeln;
close(f);
end;
procedure eighteen; // Поиск совершеннолетних
var i,p,r:integer;
s:string;
begin
// Чтение файла для заполнения переменных
assign(f,'IPW1.txt');
reset(f);
while not (eof(f)) do
begin
readln(f,s);//читаем строку
s:=trim(s)+' ';//убираем пробелы
while pos(' ',s)>0 do//удалим лишние пробелы
delete(s,pos(' ',s),1);
i:=strtoint(copy(s,1,pos(' ',s)-1));//номер
delete(s,1,pos(' ',s));//удалим
mas[i].Fteam:=copy(s,1,pos(' ',s)-1);//название команды
delete(s,1,pos(' ',s));//удалим
mas[i].Fname_1:=copy(s,1,pos(' ',s)-1);// Фамилия
delete(s,1,pos(' ',s));//удалим
mas[i].Fname_2:=copy(s,1,pos(' ',s)-1);// Имя
delete(s,1,pos(' ',s));//удалим
mas[i].Fname_3:=copy(s,1,pos(' ',s)-1);// Отчество
delete(s,1,pos(' ',s));//удалим
mas[i].Fdate:=strtoint(copy(s,1,pos(' ',s)-1));// возраст
end;
// Сортировка по возрасту 18 лет
writeln;
p:=0;
for r:=1 to i do
if mas[r].Fdate<18 then
begin
p:=p+1;
if p=1 then
begin
writeln(' _________________________________________________________');
writeln('| № | Команда | Фамилия | Имя | Отчество | НЕТ 18! |');
writeln('|___________________________________________________________|');
end;
writeln('|',r:3,'|',mas[r].Fteam:13,'|',mas[r].Fname_1:13,'|',mas[r].Fname_2:13,'|',mas[r].Fname_3:14,'|',mas[r].Fdate:9,'|');
end;
if p>0 then
begin
writeln(' ________________________________________________________ ');
writeln;
end;
if p=0 then
begin
writeln(' ________________________________________________________ ');
writeln('| Всем участникам 18 лет или больше! |');
writeln(' ________________________________________________________ ');
writeln;
end;
close(f);
end;
begin
Writeln('1 - Ввод данных в текстовый файл;');
Writeln('2 - Чтение данных с текстового файла;');
Writeln('3 - Вывод участников младше 18 лет;');
Writeln('4+ - Выход;');
readln(v);
while v<4 do
begin
case v of
1:vvod;
2:reading;
3:eighteen;
end;
Writeln('1 - Ввод данных в текстовый файл;');
Writeln('2 - Чтение данных с текстового файла;');
Writeln('3 - Вывод участников младше 18 лет;');
Writeln('4+ - Выход;');
readln(v);
end;
end.
Тестовый набор: