Огруппе студентов из след. данных 1) кол-во студентов, 2) дата рождения, 3) кол-во экзаменов, 4) фамилия и имя каждого студента, 5) пол студента, 6) отметка получен. на экзамене а) напишите программу, которая выведит на экран список студентов заложников. б) программу, которая выводит на экран список студентов, которым исполнилось 20 лет.
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 лет
Козлова Ирина
Тарасов Константин