Pascal ABC, записи, нужен вывод отсортированной строки
Здравствуйте!!!
необходимо написать программу , которая вводит и выводит информацию о 10 студентах,а именно фамилия,имя, пол, дата рождения(число,месяц,год), оценки за 4 экзамена сессии и сортирует список студентов по среднему баллу
к примеру:
1)Иванова Марина Ивановна Ж 18.03.1992 4 5 5 4
2)Иванов Вадим Максимович М 22.10.1993 2 2 3 2
...
т.е после сортировки первой будет идти информация о Вадиме потом о Марине.
сделала так, но вывести информацию после сортировки не могу.
program upr1;
const n=10;
type date=record
day:1..31;
month:1..12;
year:integer;
end;
pupil=record
fam,name:string[15];
p:char;
bd:date;
b1,b2,b3,b4:2..5;
sb:real;
end;
procedure p1( var a
upil);
begin
with a do
begin
write('фамилия:');
readln(fam);
write('имя:');
readln(name);
write('пол:');
readln(p);
write('дата рождения:');
readln(bd.day,bd.month,bd.year);
write('оценки:');
readln(b1,b2,b3,b4);
end;
end;
procedure p2( a
upil);
begin
with a do begin
write(fam,'':15-length(fam));
write(name,'':10-length(name));
with bd do begin
if day<10 then write ('0');
write(day,'.');
if month<10 then write ('0');
write(month,'.');
write(year);
end;
writeln(b1,b2,b3,b4);
end;
end;
var mas:array[1..n] of pupil;
i,k:integer; c:real;
begin
writeln('введите информацию об ',n,' учениках');
for i:=1 to n do p1(mas);
writeln('список учеников: ');
writeln('n фи пол дата рождения ');
for i:=1 to n do begin write (i:2,'.');
p2(mas);
end;
writeln;
for i:=1 to n do
with mas do begin
sb:=(b1+b2+b3+b4)/4;
writeln('средний балл ',i,'-го студента:',sb);
end;
for k:=2 to n do
for i:=n downto k do
if mas[i-1].sb > mas.sb then begin
c:=mas[i-1].sb;
mas[i-1].sb:=mas.sb;
mas.sb:=c;
for i:=1 to n do
p2(mas);
end;
end.
Спасибо заранее!!!!!
Здравствуйте!!!
необходимо написать программу , которая вводит и выводит информацию о 10 студентах,а именно фамилия,имя, пол, дата рождения(число,месяц,год), оценки за 4 экзамена сессии и сортирует список студентов по среднему баллу
к примеру:
1)Иванова Марина Ивановна Ж 18.03.1992 4 5 5 4
2)Иванов Вадим Максимович М 22.10.1993 2 2 3 2
...
т.е после сортировки первой будет идти информация о Вадиме потом о Марине.
сделала так, но вывести информацию после сортировки не могу.
program upr1;
const n=10;
type date=record
day:1..31;
month:1..12;
year:integer;
end;
pupil=record
fam,name:string[15];
p:char;
bd:date;
b1,b2,b3,b4:2..5;
sb:real;
end;
procedure p1( var a
begin
with a do
begin
write('фамилия:');
readln(fam);
write('имя:');
readln(name);
write('пол:');
readln(p);
write('дата рождения:');
readln(bd.day,bd.month,bd.year);
write('оценки:');
readln(b1,b2,b3,b4);
end;
end;
procedure p2( a
begin
with a do begin
write(fam,'':15-length(fam));
write(name,'':10-length(name));
with bd do begin
if day<10 then write ('0');
write(day,'.');
if month<10 then write ('0');
write(month,'.');
write(year);
end;
writeln(b1,b2,b3,b4);
end;
end;
var mas:array[1..n] of pupil;
i,k:integer; c:real;
begin
writeln('введите информацию об ',n,' учениках');
for i:=1 to n do p1(mas);
writeln('список учеников: ');
writeln('n фи пол дата рождения ');
for i:=1 to n do begin write (i:2,'.');
p2(mas);
end;
writeln;
for i:=1 to n do
with mas do begin
sb:=(b1+b2+b3+b4)/4;
writeln('средний балл ',i,'-го студента:',sb);
end;
for k:=2 to n do
for i:=n downto k do
if mas[i-1].sb > mas.sb then begin
c:=mas[i-1].sb;
mas[i-1].sb:=mas.sb;
mas.sb:=c;
for i:=1 to n do
p2(mas);
end;
end.
Спасибо заранее!!!!!