В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
superyarmola201
superyarmola201
02.09.2021 19:19 •  Информатика

Свойство алгоритма, заключающееся в том, что алгоритм должен завершиться через определенное количество шагов:

Показать ответ
Ответ:
RengevychPolina
RengevychPolina
17.02.2022 11:57
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
0,0(0 оценок)
Ответ:
muravyov1910
muravyov1910
17.02.2022 11:57
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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота