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

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

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

Автор: Лилия 25.12.2007 11:13

В текством файле содержаться целые числа, необходимо вычислить их среднее арифметическое. Вывод результатлв продублируйте в другой файл.

я решила сначала заполнить файл f, в котором содержаться элементы, среднее арифметическое надо посчитать... Но он почему-то не заполняет выдает ошибку...

Program Sredneearif;
Uses crt;
Var
Kol,Elem,Summ:integer;
f : file of integer;
g : file of real;
SrAr : real;
Begin
Clrscr;
assign(f,'c:\file.txt');
assign(g,'c:\file1.txt');
reset(f);
rewrite(g);
rewrite(f);
write(f,elem);
Summ :=0;
while not eof(f) do
begin
read(f,Elem);
Inc(Kol);
Inc(Summ,Elem);
end;
SrAr := Summ/Kol;
write('Sr.arif faila ravno ',SrAr:5:2); write(g,SrAr);
close(f); close(g);
readln;
End.

Автор: volvo 25.12.2007 13:09

...
reset(f); { Открыла файл данных на чтение ... }
rewrite(g); { ... файл-результат на запись ... }
rewrite(f); { ... и затерла все данные, переоткрыв ЕЩЕ РАЗ файл данных на запись }
...

Автор: Лилия 25.12.2007 13:18

Цитата(volvo @ 25.12.2007 9:09) *

...
reset(f); { Открыла файл данных на чтение ... }
rewrite(g); { ... файл-результат на запись ... }
rewrite(f); { ... и затерла все данные, переоткрыв ЕЩЕ РАЗ файл данных на запись }
...



а разве я его потом не заполнила??? write(f,elem)???

просто даже если не заполняя, а уже готовый файл взять с числами, он почему-то не правильно считает...
в файле было: 1 3 5 7 9 11, среднее арифметическое он выдавал как -1652,5...

Автор: volvo 25.12.2007 13:25

Цитата
а разве я его потом не заполнила??? write(f,elem)???
А что, elem содержит в себе ВСЕ, что было в файле f? Вот так попробуй:

Uses crt;
Var
Kol,Elem,Summ:integer;
f, g: text; { <--- По условию - ТЕКСТОВЫЕ файлы }
SrAr : real;
Begin
Clrscr;
assign(f,'c:\file.txt'); reset(f); { <--- Открываем на чтение }
assign(g,'c:\file1.txt'); rewrite(g); { <--- Открываем на запись }

Summ :=0; Kol := 0; { Если уж инициализируешь Summ, то почему забыла про Kol ? }
while not eof(f) do begin
read(f,Elem);
Inc(Kol);
Inc(Summ,Elem);
end;
SrAr := Summ/Kol; { Будет пустой файл - получишь деление на 0 }
write('Sr.arif faila ravno ',SrAr:5:2); write(g,SrAr);
close(f); close(g);
readln;
End.

Автор: Лилия 25.12.2007 13:38

Volvo, спасибо огромное...
Ещё, можно тебя попросить, посмотри пожалуйста мою тему про производную... http://forum.pascal.net.ru/index.php?showtopic=20952 может подскажешь что там можно сделать.... Буду очень благодарна...