Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Neon6868
Задание: Подсчитать количество элементов файла, больших среднего арифметического.

Программа:

Program HACK;
var
f:text;
kol,bol:integer;
ar,x, summa:real;
name:string;
Begin
{$I-}
writeln('Vvedite imya faila');
readln(name);
assign(f,name);
reset(f);
if IOresult<>0 then
begin
writeln('File ne naiden!');
exit
end;
while not eof do
begin
read(f,x);
summa:=summa+x;
kol:=kol+1;
end;
bol:=0;
close(f);
reset(f);
ar:=summa/kol;
while not eof do
begin
read(f,x);
if x>ar then bol:=bol+1;
end;
writeln('Kol-vo elementov bolshix srednego arifmeticescogo=',bol);
End.


volvo
Потому что

While not eof(F) do { <--- ты ничего не забыл? }
Neon6868
Цитата(volvo @ 24.12.2007 23:49) *

Потому что

While not eof(F) do { <--- ты ничего не забыл? }


Точно lol.gif lol.gif lol.gif
andriano
1. Проверка наличия файла делается обычно так (почему - не понимаю, есть более изящные способы, но так принято):
  assign(f,name);
{$I-}
reset(f);
{$I+}
if IOresult<>0 then

2. Переменные summa и kol не инициализируются перед использованием.
3. Файлы принято закрывать после использования.

Добавлено через 2 мин.
2volvo: сам был удивлен, но согласно справке указание файловой переменной для текстовых файлов необязательно.
volvo
Угу. Необязательно. Только если оно не указано - под ним понимается Input, т.е. клавиатура:
Цитата
F, if specified, is a text file variable. If F is omitted, the standard file variable Input is assumed.
Поскольку переназначения Input не было - это не будет работать как задумывалось автором smile.gif
andriano
Угу.
Честно говоря, сам ни разу не пытался такм образом экспериментировать.
Просто меня удивила такая запись в файле, если бы было синтаксически неправильно, думаю, ошибка быб была быстро исправлена. Поэтому и полез в справку и, как уже сказал, был сам удивлен.
Справка по ТМТ, увы, лаконичнее:
Цитата
Declaration:
function Eof(var F): Boolean; // for Typed or untyped files
function Eof[(var F: Text)]: Boolean; // for Text files

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.