Ребят, помогите, очень срожно нужно. Задача с файлом в нём должно быть указан Фамилия,Дата рождения, Оценка,оценка,оценка
Например Doroshenko 1992 18 5 4 3 5
Задание состоит в том, что нужно вывести список студентов которые имеют средний бал выше чем средний бал всей группы.
Проблема состоит в том что я не могу посчитать средний бал всей группы и из за этого не могу и вывести всё остальное. Я только вывел на экран данные и смог посчитать среднюю оценку каждого студента, а дальше никак не идёт. Помогите пожалуйста.
Вот сам текст программы.
program rgr2;
var s:text;
x:string[21];
o1:integer;
o2:integer;
o3:integer;
i,j:real;
begin
assign(s,'c:\spusok.txt');
reset(s);
while not eof(s) do begin
readln(s,x,o1,o2,o3);
writeln(x,' ',o1,' ',o2,' ',o3);
end;
readln;
close(s);
reset(s);
while not eof(s) do
begin
readln(s,x,o1,o2,o3);
i:=((o1+o2+o3)/3);
writeln(x,' ',i:1:2);}
writeln(j:1:2);
write;
end;
readln;
close(s);
end.
count := 0; { <--- здесь будет число студентов }
j := 0; { <--- здесь будет среднее всей группы }
while not eof(s) do
begin
readln(s,x,o1,o2,o3);
i:=((o1+o2+o3)/3); { среднее для студента }
writeln(x,' ',i:1:2);
j := j + i; inc(count);
end;
j := j / count; { <--- Собственно, посчитали среднее }
Вот сделал всё как ты описал, но что то оно не то выводит что нужно.... и как то неверно всё таки считает среднее число всей группы (
Вот код
program rgr2;
var s:text;
x:string[21];
o1:integer;
o2:integer;
o3:integer;
j,i:real;
count:integer;
begin
assign(s,'c:\spusok.txt');
reset(s);
while not eof(s) do begin
readln(s,x,o1,o2,o3);
writeln(x,' ',o1,' ',o2,' ',o3);
end;
readln;
close(s);
reset(s);
count:=0;
j:=0;
while not eof(s) do
begin
readln(s,x,o1,o2,o3);
i:=((o1+o2+o3)/3);
j:=j+i; inc(count);
end;
j:=j/count;
readln;
reset(s);
while not eof(s) do
begin
readln(s,x,j,i);
if j<i then
writeln (x,'':2,i:1:2);
write;
end;
readln;
close(s);
end.
Я этого тебе не предлагал:
while not eof(s) do
begin
readln(s,x,j,i); { <--- Ты ж затираешь J вводом из файла }
if j<i then
writeln (x,'':2,i:1:2);
write;
end;
while not eof(s) do
begin
readln(s,x,o1,o2,o3);
i:=((o1+o2+o3)/3); { опять вычисляем среднее для студента }
if j < i then writeln (x,'':2,i:1:2);
write; { <--- Зачем ты добавляешь пустой Write - не понимаю... }
end;