Домашние задания: Информатика

помогите с информатикой 11 класс

Имеется список учеников разных школ, сдававших экзамен по информатике, с указанием их фамилии, имени, школы и набранного балла. Напишите программу, которая будет определять номера школ, в которых средний бал выше, чем средний балл по району. Если такая школа одна, то нужно вывести и средний балл. Известно, что информатику сдавали не менее 5 учеников школы № 37.
На вход программе в первой строке подается количество учеников списке N. В каждой из последующих N строк находится информация в следующем формате:
<Фамилия> <Имя> <Школа> <Балл>
где <Фамилия> – строка, состоящая не более, чем из 20 символов без пробелов,
<Имя> – строка, состоящая не более, чем из 20 символов без пробелов,
<Школа> – целое число от 1 до 99, <Балл> – целое число от 1 до 100.

Пример входной строки:
Иванов Сергей 50 87
Пример выходных данных, когда найдено два лучших:
Иванов Сергей
Сергеев Иван
0
Завтра допишу

program Svincova;

type
Student = class
private
surname: string;
name: string;
school: integer;
score: integer;
public
constructor Create(
surname: string;
name: string;
school: integer;
score: integer);
begin
Self.surname := surname;
Self.name := name;
Self.school := school;
Self.score := score;
end;
procedure Print();
begin
writeln('1: ', Self.surname, ' 2: ', Self.name, ' 3: ', Self.school, ' 4: ', Self.score);
end;
end;

const
FILE_NAME = 'svincova.txt';

var
f: text;
c: char;
n, i : integer;
input: string;
info: array[1..4] of string;
Students: array of Student;
midScore: real;

function ExplodeAndValid(input: string): boolean;
begin
input += ' ';
for var j := 1 to 4 do begin
info[j] := copy(input, 1, pos(' ', input, 1)-1);
delete(input, 1, pos(' ', input, 1));
end;
if (length(info[1]) > 20) or (length(info[2]) > 20)
or (strToInt(info[3]) < 1) or (strToInt(info[3]) > 99)
or (strToInt(info[4]) < 1) or (strToInt(info[4]) > 100) then
Result := false
else
Result := true;
end;

begin
write('Ввести данные самостоятельно? [y/n] ');
while (c <> 'y') and (c <> 'n') do
c:= ReadlnChar();
case c of
'y': begin
n := readlnInteger('Введите количество учеников: ');
setLength(Students, n+1);
writeln('Вводите информацию в формате:');
writeln('<Фамилия (до 20 символов) > <Имя (до 20 символов) > <Школа (1-99)> <Балл (1-100)>');
i := 1;
while i <= n do begin
write(i, ' ученик: ');
readln(input);
if not ExplodeAndValid(input) then begin
writeln('Некорректный ввод! Повторите..');
i -= 1;
end
else
Students[i] := new Student(
info[1],
info[2],
strToInt(info[3]),
strToInt(info[4]));
i += 1;
end;
end;
'n': begin
if fileExists(FILE_NAME) then begin
assign(f, FILE_NAME);
reset(f);
end
else
writeln('Файла ', FILE_NAME, ' не существует!');
i := 1;
while not eof(f) do begin
readln(f, input);
ExplodeAndValid(input);
setLength(Students, i+1);
Students[i] := new Student(
info[1],
info[2],
strToInt(info[3]),
strToInt(info[4]));
Students[i].Print();
i += 1;
end;
close(f);
end;
end;
for i := 1 to high(Students) do
midScore += Students[i].score;
midScore := midScore / i;
writeln(#10, 'Средний балл по району: ', midScore);
end.
АК
Александр Константинов
18 091
Лучший ответ
Александр Константинов Содержимое файла svincova.txt:

Смирнов Александр 2 90
Иванов Алексей 11 87
Кузнецов Сергей 37 100
Соколова Анастасия 37 61
Попов Иван 35 45
Лебедева Дарья 37 92
Козлов Андрей 2 80
Новиков Михаил 37 77
Морозов Павел 37 83
Петрова Юлия 1 95
Александр Константинов Не могу редактировать, потому вот файлом..
Александр Константинов Пример выходных данных, когда найдено два лучших:
Иванов Сергей
Сергеев Иван
0

Вот тут я не понял что требуется, потому если что сама, использую массив объектов Students.