Задать вопрос
5 сентября, 16:20

Даны следующие типы данных:

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

+5
Ответы (1)
  1. 5 сентября, 19:06
    0
    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
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Даны следующие типы данных: type Data=record День: 1 ... 31; Месяц: 1 ... 12; Год : integer; end; Личность=record ФамилияИмя : string; ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы