Вывести на экран список студентов по успеваемости - Pascal ABC
Формулировка задачи:
Всем привет! Есть задание:
Определить тип данныхзапись, имеющий поля фамилия и оценки по 5 предметам. Определить массив из 10 записей. В программе ввести в массив данные и вывести на экран список студентов по успеваемости.
Наваял следующее:
Не врубаюсь с сортировкой на выводе, помогите. Заранее, спасибо!
Решение задачи: «Вывести на экран список студентов по успеваемости»
textual
Листинг программы
program main;
const n=10;
Type anketa=record
fam: string[10];
Mining: integer;
Blacksmith: integer;
Riding: integer;
Flying: integer;
firstaid: integer;
end;
var student: array [1..n] of anketa;
sr: array [1..n] of integer;
q,i,j: integer;
x:anketa;
begin
writeln('Введите данные студентов');
for i:=1 to n do
begin
sr[i]:=0;
writeln('Студент ',i);
with student[i] do
begin
write('Фамилия: ');readln(fam);
write('Физика: ');readln(Mining);
sr[i]:=sr[i]+Mining;
write('Русский: ');readln(Blacksmith);
sr[i]:=sr[i]+Blacksmith;
write('Матан: ');readln(Riding);
sr[i]:=sr[i]+Riding;
write('Уборка :');readln(Flying);
sr[i]:=sr[i]+Flying;
write('История: ');readln(firstaid);
sr[i]:=sr[i]+firstaid
end;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if sr[i]<sr[j] then
begin
q:=sr[i];
sr[i]:=sr[j];
sr[j]:=q;
x:=student[i];
student[i]:=student[j];
student[j]:=x;
end;
writeln('-------------------------------------------------------');
writeln('| Фамилия |Физика|Русский|Матан|Уборка|История|Всего|');
writeln('-------------------------------------------------------');
for i:=1 to n do
with student[i] do
begin
write('|',fam:10,' |',Mining:4,' |',Blacksmith:5,' |',Riding:3,' |');
writeln(Flying:4,' |',Firstaid:5,' |',sr[i]:4,' |');
end;
writeln('-------------------------------------------------------');
end.
Объяснение кода листинга программы
- В начале программы объявляются переменные n, anketa, student, sr, q, i, j, x.
- Переменная n представляет собой количество студентов, которые будут введены.
- Переменная anketa представляет собой структуру данных, которая содержит информацию о студентах.
- Переменная student представляет собой массив, который будет использоваться для хранения информации о студентах.
- Переменная sr представляет собой массив, который будет использоваться для хранения суммарных баллов каждого студента.
- Переменные q, i, j представляют собой переменные, которые будут использоваться для обмена данными между студентами.
- Переменная x представляет собой временную переменную, которая будет использоваться для копирования информации о студенте.
- Программа запрашивает у пользователя ввод данных о студентах и сохраняет эти данные в соответствующих переменных.
- Затем программа выводит на экран список студентов по успеваемости.
- Для каждого студента программа выводит его фамилию, сумму баллов по физике, русскому языку, математике, уборке и истории.
- После вывода списка всех студентов программа выводит общую сумму баллов каждого студента.
- Наконец, программа выводит итоговую таблицу с фамилиями студентов, их суммарными баллами и общим количеством баллов.