Даны следующие типы данных: type Data=record День : 1...31; Месяц : 1...12; Год : integer; end; Личность=record ФамилияИмя :string; ДатаРождения: Data; end; ЛистЛичностей=array [1..50] of Личность; Напишите программу которая вы...

Даны следующие типы данных: type Data=record День : 1...31; Месяц : 1...12; Год : integer; end; Личность=record ФамилияИмя :string; ДатаРождения: Data; end; ЛистЛичностей=array [1..50] of Личность; Напишите программу которая выводит с клавиатуры данные о n лицах (n≤50) и выводит на экран: б)фамилии и имена тех кто родился в месяц l года в)фамилии и имена тех кто родился в год a г)фамилии и имена тех чья дата рождения z.l.a
Гость
Ответ(ы) на вопрос:
Гость
const   nm = 50; type   Data = record     day: 1..31;     month: 1..12;     year: integer   end;   lichn = record     famnam: string;     datr: Data   end;   listlichn = array [1..nm] of lichn; var   m: listlichn;   n: integer; procedure GetLichn(k: integer); begin   Write(k, ') Введите через пробел фамилию, имя: ');   Readln(m[k].famnam);   Writeln('Введите через пробел день, месяц и год рождения: ');   Readln(m[k].datr.day, m[k].datr.month, m[k].datr.year) end; procedure WriteLichn(k: integer); begin   Writeln(m[k].famnam, ' ', m[k].datr.day, '.', m[k].datr.month, '.', m[k].datr.year) end; procedure Vvod(var p: integer); var   i: integer; begin   Write('Введите количество лиц n (максимум 50) -> ');   Readln(p);   if p <= 50 then for i := 1 to p do GetLichn(i)   else begin Writeln('Вы ввели неправильное значение'); p := 0 end end; procedure Zapros1;  { фамилии и имена тех кто родился в месяц l года } var   i: integer;   l: 1..12; begin   Write('Введите номер месяца рождения (1-12): ');   Readln(l);   for i := 1 to n do     if m[i].datr.month = l then WriteLichn(i) end; procedure Zapros2;  { фамилии и имена тех кто родился в год a } var   a, i: integer; begin   Write('Введите год рождения: ');   Readln(a);   for i := 1 to n do     if m[i].datr.year = a then WriteLichn(i) end; procedure Zapros3;  { фамилии и имена тех чья дата рождения z.l.a } var   a, i: integer;   z: 1..31;   l: 1..12; begin   Write('Введите через пробел день, месяц и год рождения: ');   Readln(z, l, a);   for i := 1 to n do     if (m[i].datr.year = a) and (m[i].datr.month = l)       and (m[i].datr.day = z) then       WriteLichn(i) end; begin   Vvod(n);   Zapros1;   Zapros2;   Zapros3 end. Тестовое решение: Введите количество лиц n (максимум 50) -> 3 1) Введите через пробел фамилию, имя: Иванов Иван Введите через пробел день, месяц и год рождения: 24 12 1973 2) Введите через пробел фамилию, имя: Петров Петр Введите через пробел день, месяц и год рождения: 05 03 1982 3) Введите через пробел фамилию, имя: Козлова Екатерина Введите через пробел день, месяц и год рождения: 1 12 1994 Введите номер месяца рождения (1-12): 12 Иванов Иван 24.12.1973 Козлова Екатерина 1.12.1994 Введите год рождения: 1982 Петров Петр 5.3.1982 Введите через пробел день, месяц и год рождения: 5 3 1982 Петров Петр 5.3.1982
Не нашли ответ?
Ответить на вопрос
Похожие вопросы