Глава 40. Задание Е.

Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Может быть полезна студентам-первокурсникам и преподавателям информатики.

Модераторы: Oleg_D, Модераторы

Глава 40. Задание Е.

Сообщение Fors » 02.07.2016 17:19:46

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

Само задание и ответ.
И) Напишите функцию для подсчета количества номеров в полицейской БД при
условии, что одна строка может содержать несколько номеров, а некоторые строки (в т.ч.
в конце файла) могут быть пустыми.

function CalcNumbers(var aFile: text): integer;
var cnt,n: integer;
begin
cnt:=0;
while not Eof(aFile) do begin
{ Пропуск пустых строк }
while Eoln(aFile) do
if Eof(aFile) then Break else Readln(aFile);
if Eof(aFile) then Break;
Read(aFile, n);
Inc(cnt);
end;
CalcNumbers:= cnt;
end;

var F: Text;

begin
Assign(F, 'Test.txt'); Reset(F);
Writeln(CalcNumbers(F));
Close(F);
Readln;
end.
Fors
незнакомец
 
Сообщения: 4
Зарегистрирован: 02.07.2016 17:09:09

Re: Глава 40. Задание Е.

Сообщение Oleg_D » 02.07.2016 17:51:11

Да, есть такой грешок у стандартных функций Паскаля: не любят они концевых пробелов :(
И потому лучше применять две модернизированные функции SeekEoln (вместо Eoln) и SeekEof (вместо Eof). Они игнорируют концевые пробелы и пустые строки в конце, -- проверьте на этом примере.
Надо бы добавить это в книгу когда-нибудь.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36


Вернуться в Книга "Песни о Паскале"

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru