Получить фамилии тех учеников класса, которые являются хорошистами и отличниками по итогам года Также указать, насколько их средний балл отличается от среднего балла класса.
Пожалуйста, люди, которые разбираются в Паскале, помогите! Не нужно присылать решение этой задачи из Решебников. Там не так, без файла.
Я знаю как найти и вывести хорошистов и отличников, но средний балл считается вообще не правильно.

Вот часть задачи(возможно кому-то пригодиться, чтобы понять как вообще должна выглядеть задача).
Связывала текстовый документ с программой. Запись в текстовом документе выглядит так(не знаю важно ли это):

Заранее спасибо
program school;
var
f: text;
y: record
fam: string;
o1, o2, o3: integer;
avg: real; // средний балл
end;
sum, count: integer; // переменные для подсчета среднего балла класса
begin
assign(f, 'C:\xyu.txt');
reset(f);
sum := 0;
count := 0;
writeln('Отличники:');
while not eof(f) do
begin
readln(f, y.o1, y.o2, y.o3, y.fam);
if (y.o1 = 5) and (y.o2 = 5) and (y.o3 = 5) then
begin
writeln(y.fam, ' - отличник');
y.avg := (y.o1 + y.o2 + y.o3) / 3;
sum := sum + y.avg;
count := count + 1;
end;
end;
writeln('Хорошисты:');
reset(f); // переход к началу файла
while not eof(f) do
begin
readln(f, y.o1, y.o2, y.o3, y.fam);
if ((y.o1 = 4) and (y.o2 = 5) and (y.o3 = 5)) or
((y.o1 = 5) and (y.o2 = 4) and (y.o3 = 5)) or
((y.o1 = 5) and (y.o2 = 5) and (y.o3 = 4)) or
((y.o1 = 4) and (y.o2 = 4) and (y.o3 = 5)) or
((y.o1 = 5) and (y.o2 = 4) and (y.o3 = 4)) or
((y.o1 = 4) and (y.o2 = 5) and (y.o3 = 4)) or
((y.o1 = 4) and (y.o2 = 4) and (y.o3 = 4)) then
begin
y.avg := (y.o1 + y.o2 + y.o3) / 3;
sum := sum + y.avg;
count := count + 1;
if y.avg >= 4.5 then
begin
writeln(y.fam, ' - отличный хорошист');
end
else
begin
writeln(y.fam, ' - хорошист');
end;
end;
end;
close(f);
writeln('Средний балл класса: ', sum / count:0:2);
end.
Считается неправильно?
Вы и не пытались его считать: вы не знаете математики.
Чтобы получить средний бал нужно сложить все оценки, а затем разделить их на их количество.
Например средний бал 5 и 3
(5+3):2=4
Если средний балл имеет остаток - выкидываем.
Например, 5 и 4
(5+4):2=4,5 ≈ 4
Любой язык програмирования имеет оператор целочисленного деления, который всё сделает за вас.
Кстати, гугл говорит, что в питоне это //
Значит для вас это будет строка
(y.o1+y.o2+y.o3)//3;
Не нужно создавать отдельный цикл while для каждой оценки.
Это всё можно сделать в одном цикле.