• Даны следующие типы данных:
    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

Ответы 1

  • 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
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years