Напишите программу, которая выводит с клавиатуры данные о n лицах (n=<50) и выводит на экран:
в)фамилии и имена тех, кто родился в год a;
г) возраст каждого человека в годах, месяцах и днях z.l.a.;
![](https://st.uroker.com/files/3ab/3abd2e279ab65bd5016101da08e6935b.jpeg)
Ответы
Відповідь:program FacesInfo;
uses
SysUtils, DateUtils;
const
MAX_FACES = 50;
type
Face = record
FirstName: string;
LastName: string;
BirthYear: integer;
BirthMonth: integer;
BirthDay: integer;
end;
var
Faces: array[1..MAX_FACES] of Face;
n, a: integer;
procedure ReadFaceData(var person: Face);
begin
writeln('Введите имя:');
readln(person.FirstName);
writeln('Введите фамилию:');
readln(person.LastName);
writeln('Введите год рождения:');
readln(person.BirthYear);
writeln('Введите месяц рождения (1-12):');
readln(person.BirthMonth);
writeln('Введите день рождения:');
readln(person.BirthDay);
end;
procedure DisplayFacesBornInYear(year: integer);
var
i: integer;
begin
writeln('Лица, родившиеся в ', year, ' году:');
for i := 1 to n do
begin
if Faces[i].BirthYear = year then
writeln(Faces[i].LastName, ' ', Faces[i].FirstName);
end;
writeln;
end;
procedure CalculateAge(person: Face);
var
today: TDateTime;
birthdate: TDateTime;
ageInDays: Integer;
years, months, days: word;
begin
today := Now;
birthdate := EncodeDate(person.BirthYear, person.BirthMonth, person.BirthDay);
ageInDays := Trunc(today - birthdate);
years := ageInDays div 365;
ageInDays := ageInDays mod 365;
months := ageInDays div 30;
days := ageInDays mod 30;
writeln(person.LastName, ' ', person.FirstName, ': ', years, ' лет, ', months, ' месяцев, ', days, ' дней');
end;
procedure DisplayAllAges;
var
i: integer;
begin
writeln('Возраст каждого человека:');
for i := 1 to n do
begin
CalculateAge(Faces[i]);
end;
writeln;
end;
begin
writeln('Введите количество лиц (n <= 50):');
readln(n);
if (n > 0) and (n <= MAX_FACES) then
begin
for a := 1 to n do
begin
writeln('Введите данные для лица ', a, ':');
ReadFaceData(Faces[a]);
end;
writeln('Введите год для вывода фамилий и имен тех, кто родился в этот год:');
readln(a);
DisplayFacesBornInYear(a);
DisplayAllAges;
end
else
writeln('Некорректное количество лиц. Введите число от 1 до 50.');
readln;
end.
Пояснення: