Паскаль: обробка текстів, Детальна інформація
Паскаль: обробка текстів
repeat readln(s1); until isword(s1);
nlin:=1;
while getlex1(f, s2) do if pos(s1, s2)<>0 then writeln(s2, ' ', nlin);
Функція getlex1 відрізняється від getlex збільшенням глобальної у ній змінної nlin. Воно відбувається, коли читається символ, що задає кінець рядка. Ми "забудемо" про те, що цим символом у мові Турбо Паскаль є chr(13), і скористаємося функцією eoln. Зверніть увагу, що її виклик передує читанню символу, оскільки за його виконання аналізується доступний, ще не прочитаний, символ тексту:
function getlex1(var f:text; var lex:string):boolean;
const ch : char=' '; var isl : boolean;
begin
lex:=''; getlex1:=false;
while not eof(f) and not isletter(ch) do
begin
while eoln(f) and not eof(f) do
begin nlin:=nlin+1; readln(f) end;
read(f, ch);
end;
{eof(f) or isletter(ch)}
if isletter(ch) then
begin
getlex1:=true; lex:=lex+ch; isl:=true;
while not eof(f) and isl do
begin
if eoln(f) then exit;
read(f,ch);
if isletter(ch) then lex:=lex+ch
else isl:=false
end;
{eof(f) or not isl}
end;
end;
Написання повної програми також залишаємо вправою.
Приклад 8. Коментар – це послідовність символів, що починається символами '(*', закінчується символами '*)' і не містить '*)' усередині. Написати програму читання та копіювання тексту з вилученням коментарів.
nlin:=1;
while getlex1(f, s2) do if pos(s1, s2)<>0 then writeln(s2, ' ', nlin);
Функція getlex1 відрізняється від getlex збільшенням глобальної у ній змінної nlin. Воно відбувається, коли читається символ, що задає кінець рядка. Ми "забудемо" про те, що цим символом у мові Турбо Паскаль є chr(13), і скористаємося функцією eoln. Зверніть увагу, що її виклик передує читанню символу, оскільки за його виконання аналізується доступний, ще не прочитаний, символ тексту:
function getlex1(var f:text; var lex:string):boolean;
const ch : char=' '; var isl : boolean;
begin
lex:=''; getlex1:=false;
while not eof(f) and not isletter(ch) do
begin
while eoln(f) and not eof(f) do
begin nlin:=nlin+1; readln(f) end;
read(f, ch);
end;
{eof(f) or isletter(ch)}
if isletter(ch) then
begin
getlex1:=true; lex:=lex+ch; isl:=true;
while not eof(f) and isl do
begin
if eoln(f) then exit;
read(f,ch);
if isletter(ch) then lex:=lex+ch
else isl:=false
end;
{eof(f) or not isl}
end;
end;
Написання повної програми також залишаємо вправою.
Приклад 8. Коментар – це послідовність символів, що починається символами '(*', закінчується символами '*)' і не містить '*)' усередині. Написати програму читання та копіювання тексту з вилученням коментарів.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021