Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ записи с файлами

Автор: RIJIKOV 14.12.2006 15:20

Люди добрые,помогите зделать такую задачу:

_______________________________________________
N учеников проходили тестирование выполнив M тестов по какому либо предмету.
Сколько очков набрал каждый ученик по всем темам? Вычислить средний бал,полученный учениками, и разницу между лучшим результатом и средним баллом.
_______________________________________________
помогите пожалуста!!!!! горю!!!!!

Автор: Caranthir 14.12.2006 17:04

ну матрица N*M и суммируешь по строкам....всё

Автор: volvo 14.12.2006 17:13

Мистер Caranthir, в следующий раз, прежде чем ТАК безапелляционно написать "ВСЕ", соизвольте хотя бы прочесть заголовок задания... Я понятно выражаюсь? Человек просил работу с файлами, а не с матрицами...

В тему об оптимизации никто не написал "а чего ты мучаешься, оптимизируй и ВСЕ"... mad.gif

Автор: Caranthir 14.12.2006 18:35

Cорри) просто открыл новые сообщения........

Файлы-файлы...хм..
Сейчас..


PS. За оптимизацию спасибо!

Автор: RIJIKOV 15.12.2006 2:37

я свою задачу,которая и так не работает и работать не будет наверно выкладывать не буду,т.к. смысла в ней не вмжу(дохлый номер,исправить не получится),поэтому народ,помогите пожалуста её с нуля сделать,я вас очень прошу. Я первый раз так за помощью обращаюсь mega_chok.gif и препод у нас такая,что толком нефига не объясняет и тут же дает задачиsad.gif помогите,буду очень признателен wacko.gif

Автор: мисс_граффити 15.12.2006 2:49

а я теперь преподов на форумах не обсуждаю... после того как мне на экзамене одно из моих сообщений с форума процитировали smile.gif)

смысл выкладывания - показать, что ты что-то пробовал делать, и понять, какие моменты тебе остались не ясны после прочтения FAQ (ты ведь читал, правда?)

Автор: RIJIKOV 15.12.2006 13:34

ну незнаю я как делать,хоть убейте и в етом нефига не понял!!ну раз так надо,то вот мои мысли по етому поводу(я уверен что у меня все неправильно)


Прикрепленные файлы
Прикрепленный файл  SEGODNYA.PAS ( 489 байт ) Кол-во скачиваний: 559

Автор: Lapp 15.12.2006 14:32

Цитата(RIJIKOV @ 15.12.2006 10:34) *

(я уверен что у меня все неправильно)

Это все равно лучше, чем ничего! smile.gif

1. Не совсем понятно, зачем тебе запись. Тебе нужно записать всю информацию в типизированный файл?
2. Надо ввести еще один цикл, вложенный в цикл по людям. Это должен быть цикл по тестам.
3. Запрашивай на ввод не real переменную test, а, скажем, переменную mark.
4. Переменную test перед циклом обнули, а в цикле прибавляй к ней оценки.
5. Добавь еще одну прееменную, Sum, которую обновляй перед внутренним циклом. Во внутреннем цикле суммируй в нее оценки.
5. Введи еще одну переменную, целую, Мах, обнули ее перед внешним циклом. Заноси в нее значение пременной Sum, если то меньше нее.
6. После внешнего цикла раздели содержимое Sum на количество студентов - это средний балл.

Пока этого хватит, мне кажется..

Автор: RIJIKOV 15.12.2006 15:13

ето все конечно хорошо,но я в етом нефига не понимаю wacko.gif так сказать дуб дубом,иначебы я сюда не обратился mega_chok.gif я надеюсь вы понимаете о чем яsmile.gif короче полный ламерsad.gif

Автор: Postman 16.12.2006 3:14

Вот мой код:


var sum,max,mid,ch,n,raz:Real;
f1,f2:text;

begin
assign (f1,'in.txt');
assign (f2,'out.txt');
reset (f1);
rewrite (f2);
while not eof (f1) do
begin
repeat
read (f1,ch);
if max<ch then
max:=ch;
sum:=sum+ch;
n:=n+1;
until eoln(f1);
mid:=sum/n;
raz:=max-mid;
writeln (f2,'sum: ',sum:2:1,',mean score: ',mid:2:1,',difference: ',raz:2:1);

sum:=0;
max:=0;
n:=0;
mid:=0;
end;
close(f1);
close(f2);
end.


Автор: volvo 16.12.2006 3:41

Postman, ты тоже в режиме Write-Only? Переключись на чтение, лучше САМ... Ты у себя в программе видел Record ???

Автору: Ты уточнишь условие или так и будешь отмалчиваться? Тогда тема идет в корзину, раз тебе помощь не требуется. mad.gif

Автор: RIJIKOV 16.12.2006 6:46

а что тут уточнять? мое первое сообщение:там и есть условие! что непонятного? как препод условие дала так я и написал,так что все уточнено.VOLVO и я не отмалчиваюсь,просто как порядошного студента меня дома днём нет(учеба),так что появится я тут могу либо сутра или вечеромsmile.gif

Автор: Lapp 16.12.2006 7:02

Цитата(RIJIKOV @ 16.12.2006 3:46) *

а что тут уточнять? мое первое сообщение:там и есть условие! что непонятного?

Название твоей темы содержит слова "файлы" и "записи".
В условии ни про то, ни про другое ничего нет.
Прочти п.1 в моем мессадже выше.
Мы все понимаем, что само условие - это еще не совсем все. Нужна дополнительная информация, которую ты не говоришь, поскольку она тебе кажется очевидной. Например, если вы проходите записи, то они должны быть применены. Никто же тут не знает, что именно вы проходите. А нестыковки названия и условия (и, тем более, решения) видны всем.
Понял?
Если хочешь результатов, сотрудничай с теми, кто тебе помогает. Сделай усилие, чтоб понять, что от тебя хотят. А хотят явно не просто-так из садизма.. smile.gif
Уточни условие, пожалуйста.

Автор: RIJIKOV 16.12.2006 20:08

ето типизированные файлы,насколько я понял. Но с файлами я ваще работать не умею и кроме того что я намудрил с задачей в голову больше нечего не лезит !smoke2.gif помогите пожалуста,мне она к понедельнику позарез нужна !mol1.gif

Автор: Postman 18.12.2006 1:37

После справедливого замечания модератора из под пера вышел следующий опус.
Записи использованы в связном списке.



type
markspointer = ^marks;
marks = record
next:markspointer;
mark:real;
end;

studpointer = ^student;
student = record
next:studpointer;
first:markspointer
end;

var
sum,mark,mid,raz,max,n:Real;
currst,newst,firststud:studpointer;
currm,newm:markspointer;
f1,f2:text;
a:boolean;

begin
assign (f1,'in.txt');
assign (f2,'out.txt');
reset (f1);
rewrite (f2);
new(firststud);
a:=true;
mark:=0;
raz:=0;
mid:=0;
n:=0;
while not eof (f1) do
begin
if a=true then
begin
new (newst);
firststud^.next:=newst;
a:=false;
currst:=newst;
new(newm);
currst^.first:=newm;
read(f1,mark);
newm^.mark:=mark;
currm:=newm;
end else
begin
new(newst);
currst^.next:=newst;
currst:=newst;
new (newm);
currst^.first:=newm;
read(f1,mark);
newm^.mark:=mark;
currm:=newm;
end;
while not eoln(f1) do
begin
new(newm);
currm^.next:=newm;
read (f1,mark);
newm^.mark:=mark;
currm:=newm;
end;
end;
currst:=firststud^.next;
currm:=currst^.first;
while currst <> nil do
begin
while currm <> nil do
begin
mark:=currm^.mark;
if max<mark then max:=mark;
sum:=sum+mark;
n:=n+1;
currm:=currm^.next;
end;
mid:=sum/n;
raz:=max-mid;
writeln (f2,'sum: ',sum:3:1,',mean score: ',mid:3:1,',difference: ',raz:3:1);
sum:=0;
max:=0;
n:=0;
mid:=0;
currst:=currst^.next;
currm:=currst^.first;
end;
Close(f1);
Close(f2);
end.



Автор: RIJIKOV 18.12.2006 15:38

спасибо большое,но всетаки она работать не хочет :выдает ошибку file not open fo input и указывает на строку
while not eof (f1) do blink.gif как заставить ее работать то? очень нужно

нельзя ее чуть короче сделать и по проще?

Автор: Postman 18.12.2006 21:35

Цитата
выдает ошибку file not open fo input и указывает на строку
while not eof (f1) do

Судя по всему, ты не открыл файл f1 для чтения;
Обрати внимание на строку
Цитата
reset (f1);

Автор: мисс_граффити 18.12.2006 22:44

ух ничего себе!
ну, во-первых, судя по изучаемым темам, автор топика до работы с динамической памятью еще не дошел... и препод у него такую лабу не примет.
во-вторых, я вообще не поняла, зачем так извращаться (ладно, спишем на мою непонятливость).
Postman, если уж работаешь с динамической памятью - работай как положено.
До выполнения программы свободно 543792, после - 542920.
З.Ы. Кинь, плз, в личку пример файла, на котором она нормально отработала... На моих тестах бред выдает - может, что-то не то делаю.

Офф: Поздравляю себя с преодолением 1000-го рубежа smile.gif

Автор: RIJIKOV 19.12.2006 1:19

да,до такого я еще не дошел,правда wink.gif и на строку ету внимание обратил,и для чтения в сделал,так ты еще и на ноль в проге делишь(n:=0;) задача точно работать не может,и ету задачу у меня не приняли,т.к.такое мы не проходили знать мы етого не можем(так мне училка сказала) lol.gif мнебы ее попроще и покороче сделать и так,чтобы я ето знал и понял wink.gif

Автор: мисс_граффити 19.12.2006 1:23

Цитата
мнебы ее попроще и покороче сделать и так,чтобы я ето знал и понял

А кто против?
тебе Lаpp написал, что нужно исправить. Ты это сделал?

Автор: Postman 20.12.2006 0:54

Цитата
зачем так извращаться

Да, программа относительно сложная. Вот я и написал сначала простенькую программку, используя только файлы(см. выше) Но RIJIKOVу нужны ещё и записи.
В этой программе я их использовал для создания динамического массива, другого применения не нашел.
Есть идеи, как их ещё применить?

Автор: Chuchi 21.12.2006 12:58

Программа по записям.....это точно.....мне тоже надо эту задачу до завтра сделать..... yes2.gif

Автор: мисс_граффити 21.12.2006 14:25

использование записей не подразумевает использование списков.

Автор: Chuchi 22.12.2006 4:43

mega_chok.gif Я попробовала составить программу, но если честно ничего не выходит mad.gif

Автор: мисс_граффити 22.12.2006 4:44

покажешь?
или это секретные оборонные разработки?