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

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

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

Автор: Neon6868 25.12.2007 3:40

Задание: Подсчитать количество элементов файла, больших среднего арифметического.

Программа:


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 25.12.2007 3:49

Потому что

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

Автор: Neon6868 25.12.2007 3:58

Цитата(volvo @ 24.12.2007 23:49) *

Потому что

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


Точно lol.gif lol.gif lol.gif

Автор: andriano 25.12.2007 3:58

1. Проверка наличия файла делается обычно так (почему - не понимаю, есть более изящные способы, но так принято):

  assign(f,name);
{$I-}
reset(f);
{$I+}
if IOresult<>0 then

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

Добавлено через 2 мин.
2volvo: сам был удивлен, но согласно справке указание файловой переменной для текстовых файлов необязательно.

Автор: volvo 25.12.2007 4:04

Угу. Необязательно. Только если оно не указано - под ним понимается Input, т.е. клавиатура:

Цитата
F, if specified, is a text file variable. If F is omitted, the standard file variable Input is assumed.
Поскольку переназначения Input не было - это не будет работать как задумывалось автором smile.gif

Автор: andriano 25.12.2007 5:18

Угу.
Честно говоря, сам ни разу не пытался такм образом экспериментировать.
Просто меня удивила такая запись в файле, если бы было синтаксически неправильно, думаю, ошибка быб была быстро исправлена. Поэтому и полез в справку и, как уже сказал, был сам удивлен.
Справка по ТМТ, увы, лаконичнее:

Цитата
Declaration:
function Eof(var F): Boolean; // for Typed or untyped files
function Eof[(var F: Text)]: Boolean; // for Text files