Задание 7. работа с комбинированными типами данных
Составить список учебной группы, включающей 25 человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив.
Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также упорядочить список студентов по среднему баллу и распечатать его.
program dz7;
type ev=record
alg:1..5;
ist:1..5;
evm:1..5;
end;
type student=record
fio: string;
birthdae:1965..1975;
date:1985..1995;
evaluation: ev;
sredniy: real;
end;
const count=11;
var
group:array[1..count] of student;
s1,t:student;
i,j,indexMin:integer;
sr: array [1..count] of real;
s: char;
function Average(s: student): real;
var max: integer;
begin
Average:=(s.evaluation.alg+s.evaluation.ist+s.evaluation.evm)/3;
end;
begin
s1.fio:='Иванов';
s1.birthdae:=1966;
s1.date:=1985;
s1.evaluation.alg:=5;
s1.evaluation.ist:=5;
s1.evaluation.evm:=3;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[1]:=s1;
s1.fio:='Петров';
s1.birthdae:=1970;
s1.date:=1988;
s1.evaluation.alg:=3;
s1.evaluation.ist:=4;
s1.evaluation.evm:=3;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[2]:=s1;
s1.fio:='Сидоров';
s1.birthdae:=1969;
s1.date:=1989;
s1.evaluation.alg:=3;
s1.evaluation.ist:=2;
s1.evaluation.evm:=5;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[3]:=s1;
s1.fio:='Гришин';
s1.birthdae:=1968;
s1.date:=1988;
s1.evaluation.alg:=5;
s1.evaluation.ist:=3;
s1.evaluation.evm:=4;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[4]:=s1;
s1.fio:='Третьяков';
s1.birthdae:=1972;
s1.date:=1990;
s1.evaluation.alg:=4;
s1.evaluation.ist:=5;
s1.evaluation.evm:=3;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[5]:=s1;
s1.fio:='Нестеров';
s1.birthdae:=1970;
s1.date:=1985;
s1.evaluation.alg:=4;
s1.evaluation.ist:=4;
s1.evaluation.evm:=4;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[6]:=s1;
s1.fio:='Третьяков';
s1.birthdae:=1966;
s1.date:=1985;
s1.evaluation.alg:=4;
s1.evaluation.ist:=5;
s1.evaluation.evm:=3;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[7]:=s1;
s1.fio:='Савельев';
s1.birthdae:=1966;
s1.date:=1986;
s1.evaluation.alg:=3;
s1.evaluation.ist:=3;
s1.evaluation.evm:=4;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[8]:=s1;
s1.fio:='Панов';
s1.birthdae:=1968;
s1.date:=1985;
s1.evaluation.alg:=4;
s1.evaluation.ist:=2;
s1.evaluation.evm:=2;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[9]:=s1;
s1.fio:='Рыбаков';
s1.birthdae:=1966;
s1.date:=1989;
s1.evaluation.alg:=4;
s1.evaluation.ist:=5;
s1.evaluation.evm:=4;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[10]:=s1;
s1.fio:='Воронов';
s1.birthdae:=1968;
s1.date:=1988;
s1.evaluation.alg:=4;
s1.evaluation.ist:=2;
s1.evaluation.evm:=3;
s1.sredniy := (s1.evaluation.alg+s1.evaluation.ist+s1.evaluation.evm)/3;
group[11]:=s1;
{
with s1 do
begin
for i:=1 to count do
begin
writeln('ФИО:');
readln(fio);
writeln('дата рождения, дата поступления:');
readln(birthdae,date);
writeln('алгебра, история, ЭВМ');
with evaluation do readln (alg, ist, evm);
sredniy := (evaluation.alg+evaluation.ist+evaluation.evm)/3;
group[i]:=s1;
end;
end;
}
writeln('-- до сортировки --');
for i:=1 to count do with group[i], group[i].evaluation do
begin
writeln('Фамилия: ',fio,', дата рождения: ',birthdae,', дата поступления: ',date);
writeln('средний бал: ',group[i].sredniy);
end;
for i := 1 to count - 1 do
begin
indexMin := i;
for j := i + 1 to count do
begin
if Average(group[j]) <Average(group[indexMin]) then indexMin := j;
end;
if i <> indexMin then
begin
t := group[indexMin];
group[indexMin] := group[i];
group[i] := t;
end;
end;
writeln('-- после сортировки --');
for i:=1 to count do with group[i],group[i].evaluation do
begin
writeln('Фамилия: ',fio,', дата рождения: ',birthdae,', дата поступления: ',date);
writeln('средний бал: ',group[i].sredniy);
end;
end.
Результаты выполнения программы: