IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Символьная информация, Задача с файлом
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Anton

Репутация: -  0  +


Ребят, помогите, очень срожно нужно. Задача с файлом в нём должно быть указан Фамилия,Дата рождения, Оценка,оценка,оценка
Например 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.



Файл прикреплённый со списком студентов.


Прикрепленные файлы
Прикрепленный файл  Spusok.txt ( 870 байт ) Кол-во скачиваний: 198
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Проблема состоит в том что я не могу посчитать средний бал всей группы
Ты же правильно начал делать, нашел средний балл каждого студента, теперь их осталось просуммировать, и поделить на количество студентов в группе:

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; { <--- Собственно, посчитали среднее }


Осталось переоткрыть файл еще раз, и пробежаться по нему в поисках студентов, имеющих ср. балл выше чем J...

P.S. Перед Reset-ом необязательно делать Close, это делается автоматически...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Anton

Репутация: -  0  +


Вот сделал всё как ты описал, но что то оно не то выводит что нужно.... и как то неверно всё таки считает среднее число всей группы sad.gif(
Вот код


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.






 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






no1.gif Я этого тебе не предлагал:

Цитата
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;
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.10.2020 6:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name