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

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

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

 
 Ответить  Открыть новую тему 
> Файлы, Подскажите почему не работает?
Neon6868
сообщение 24.12.2007 23:40
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


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

Программа:

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.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.12.2007 23:49
Сообщение #2


Гость






Потому что

While not eof(F) do { <--- ты ничего не забыл? }
 К началу страницы 
+ Ответить 
Neon6868
сообщение 24.12.2007 23:58
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


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

Потому что

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


Точно lol.gif lol.gif lol.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 24.12.2007 23:58
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


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

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

Добавлено через 2 мин.
2volvo: сам был удивлен, но согласно справке указание файловой переменной для текстовых файлов необязательно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.12.2007 0:04
Сообщение #5


Гость






Угу. Необязательно. Только если оно не указано - под ним понимается 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 1:18
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Угу.
Честно говоря, сам ни разу не пытался такм образом экспериментировать.
Просто меня удивила такая запись в файле, если бы было синтаксически неправильно, думаю, ошибка быб была быстро исправлена. Поэтому и полез в справку и, как уже сказал, был сам удивлен.
Справка по ТМТ, увы, лаконичнее:
Цитата
Declaration:
function Eof(var F): Boolean; // for Typed or untyped files
function Eof[(var F: Text)]: Boolean; // for Text files

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



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