Даны следующие типы данных:type Data=recordДень : 1...31;Месяц : 1...12;Год :
Даны последующие типы данных:
type Data=record
Денек : 1...31;
Месяц : 1...12;
Год : integer;
end;
Личность=record
ФамилияИмя :string;
ДатаРождения: Data;
end;
ЛистЛичностей=array [1..50] of Личность;
Напишите программку которая выводит с клавиатуры данные о n личиках (n50) и выводит на экран:
б)фамилии и имена тех кто родился в месяц 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) -gt; ');
Readln(p);
if p lt;= 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) -gt; 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
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) -gt; ');
Readln(p);
if p lt;= 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) -gt; 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
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов