• Предмет: Информатика
  • Автор: lenaurum06
  • Вопрос задан 3 месяца назад

Напишите программу, которая выводит с клавиатуры данные о n лицах (n=<50) и выводит на экран:
в)фамилии и имена тех, кто родился в год a;
г) возраст каждого человека в годах, месяцах и днях z.l.a.;

Приложения:

Ответы

Ответ дал: ZoobZik
0

Відповідь: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.

Пояснення:

Вас заинтересует