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

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

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

 
 Ответить  Открыть новую тему 
> Символьная информация, Задача с файлом
Single
сообщение 28.12.2007 1:10
Сообщение #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 байт ) Кол-во скачиваний: 221
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.12.2007 1:34
Сообщение #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, это делается автоматически...
 К началу страницы 
+ Ответить 
Single
сообщение 28.12.2007 18:23
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.12.2007 19:06
Сообщение #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

 



- Текстовая версия 21.07.2025 9:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"