ЗАДАНИЕ 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.

 

Результаты выполнения программы: