По поводу слишком короткого integer: в начале программы ставится {$mode objfpc}, благодаря чему integer становится longint.
Paster Fob писал(а):Парнишка писал(а):Ну и в конце, хочу спросить у знающих людей, если убрать if Cnt=CNumbers then break и позволить процедуре Read(F,N) читать последнюю пустую строку файла, почему она возвращает 0, там же ничего кроме управляющих кодов нет !?
Потому что это глюк FPC,если запустить на ТР ,то всё читается корректно.Об этом кстати уже ни раз говорилось в этом разделе.
Можно также воспользоваться функцией seekeof.
Глюки тут ни при чем. Что-же еще должен возвратить read, читая число, когда между концом файла и текущей позицией есть только управляющий символ?
И турбо-паскаль (7.0) и фрипаскаль (2.6) возвращают 0:
Код: Выделить всё
var n:integer;
f: text;
begin
// создаем текстовый файл с символом(-ми) перевода строки
Assign(F, 'num.txt'); rewrite(f); writeln(f); close(f);
// читаем оттуда число
Reset(F); read(f,n); Close(F);
// выводим, получаем 0, как в FPC так и TP
writeln(n);
end.
В принципе, можно любой набор пробельных символов считать, не только перевод строки, получим 0.
Конкретно в этой программе от Cnt=CNumbers можно избавиться, например так:
Код: Выделить всё
...
while true do begin
if Eoln(F) then Readln(F); { пропуск конца строки }
if Eof(f) then break;
Read(F, N);
if N<min then min:=N;
if N>max then max:=N;
Sum:= Sum+N;
Cnt:= Cnt+1;
end;
...