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 endend;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; Zapros3end.
Тестовое решение:Введите количество лиц n (максимум 50) -> 31) Введите через пробел фамилию, имя: Иванов ИванВведите через пробел день, месяц и год рождения: 24 12 19732) Введите через пробел фамилию, имя: Петров ПетрВведите через пробел день, месяц и год рождения: 05 03 19823) Введите через пробел фамилию, имя: Козлова ЕкатеринаВведите через пробел день, месяц и год рождения: 1 12 1994Введите номер месяца рождения (1-12): 12Иванов Иван 24.12.1973Козлова Екатерина 1.12.1994Введите год рождения: 1982Петров Петр 5.3.1982Введите через пробел день, месяц и год рождения: 5 3 1982Петров Петр 5.3.1982