// PascalABC.Net 3.0, сборка 1052
const
nstud=100;
npred=10;
type
date=record
den:byte;
mes:byte;
god:integer
end;
St=record
datr:date;
famnam:string;
gender:0..1;
ball:array[1..npred] of 2..5
end;
var
ns,np,nd,i,j:byte;
R:array[1..nstud] of St;
Dolg,flagp:boolean;
cdate:date;
begin
Write('Количество студентов: '); Read(ns);
Write('Количество предметов: '); Read(np);
Writeln('Вводите данные по каждому студенту');
Writeln('В первой строке через пробел дата рождения ДД ММ ГГГГ');
Writeln('Во второй строке фамилия, пробел, имя');
Writeln('В третьей строке пол (0 - мужской, 1 - женский)');
Writeln('В четвертой строке полученные баллы через пробел');
for i:=1 to ns do begin
Writeln('*** Студент ',i,' ***');
With R[i] do begin
Readln(datr.den,datr.mes,datr.god);
Readln(famnam); Readln(gender);
for j:=1 to np do Read(ball[j])
end
end;
{ *********** 1 *************** }
Writeln;
Writeln('Список студентов-задолжников');
nd:=0;
for i:=1 to ns do begin
With R[i] do begin
j:=1; Dolg:=false;
repeat
if ball[j]=2 then begin Dolg:=true; Inc(nd) end;
Inc(j)
until Dolg or (j>np);
if Dolg then Writeln(famnam)
end
end;
if nd=0 then Writeln('Задолжников нет!');
{ *********** 2 *************** }
Writeln;
Writeln('Введите дату запроса в формате ДД, ММ, ГГГГ: ');
Read(cdate.den,cdate.mes,cdate.god);
Writeln;
Writeln('Список студентов, которым исполнилось 20 лет');
nd:=0;
for i:=1 to ns do begin
With R[i] do begin
flagp:=false;
if cdate.god-datr.god>20 then flagp:=true
else
if cdate.god-datr.god=20 then begin
if cdate.mes>datr.mes then flagp:=true
else begin
if cdate.mes=datr.mes then flagp:=(cdate.den>=datr.den)
end
end;
if flagp then begin Writeln(famnam); Inc(nd) end;
end
end;
if nd=0 then Writeln('Нет студентов, которым исполнилось 20 лет!');
end.
Тестовое решение:
Количество студентов: 5
Количество предметов: 4
Вводите данные по каждому студенту
В первой строке через пробел дата рождения ДД ММ ГГГГ
Во второй строке фамилия, пробел, имя
В третьей строке пол (0 - мужской, 1 - женский)
В четвертой строке полученные баллы через пробел
*** Студент 1 ***
5 10 1996
Иванов Иван
0
4 3 5 5
*** Студент 2 ***
12 8 1997
Петров Петр
0
3 2 3 4
*** Студент 3 ***
9 10 1998
Сидорова Наталья
1
3 4 4 2
*** Студент 4 ***
6 9 1994
Козлова Ирина
1
5 4 4 5
*** Студент 5 ***
12 3 1995
Тарасов Константин
0
3 5 5 4
Список студентов-задолжников
Петров Петр
Сидорова Наталья
Введите дату запроса в формате ДД, ММ, ГГГГ:
2 11 2015
Список студентов, которым исполнилось 20 лет
Козлова Ирина
Тарасов Константин