Обробка текстів, Детальна інформація
Обробка текстів
var s : string[80];
k : integer; emp : boolean;
begin
while not eof(f) do
begin
readln(f, s); k:=1; emp:=true;
while (k<= length(s)) and emp do
if s[k]<>' ' then emp:=false
else k:=k+1;
if not emp then writeln(g, s)
end
end;
\xF0E7
6. Посимвольне читання тексту
Приклад 6. У тексті з рядками необмеженої довжини записано слова в латинському алфавіті, довжина яких не перевищує 255. Слова відокремлюються пропусками в довільній кількості та з рядка на рядок не переносяться. Треба визначити кількість повторень першого слова в подальшому тексті.
Для розв’ язання задачі треба
прочитати перше слово (якщо воно взагалі є в тексті), а далі по одному читати слова й порівнювати їх із першим, за рівності збільшуючи значення лічильника.
Слово є лексичною одиницею, або лексемою тексту, тобто такою послідовністю, що має самостійне значення, тому функцію читання слова з тексту назвемо getlex (взяти лексему). Ось її заголовок:
function getlex(var f:text; var lex:string):boolean.
З її виклику повертається ознака наявності слова в частині тексту, прочитаній за її виклику. Слово зберігається як значення параметра-змінної lex (лексема), а коли його в решті тексту немає, значенням стає порожній рядок. Отже, нехай s1, s2 – рядки, nrep – лічильник повторень у такому алгоритмі:
nrep:=0;
if getlex(f, s1) then
begin
while getlex(f, s2) do
if s1=s2 then nrep:=nrep+1;
writeln(nrep)
end
else writeln('у тексті немає слів');
Щоб прочитати слово, треба
від поточного доступного символу прочитати пропуски та кінці рядків, що передують слову, та запам’ ятати його символи в рядковій змінній.
k : integer; emp : boolean;
begin
while not eof(f) do
begin
readln(f, s); k:=1; emp:=true;
while (k<= length(s)) and emp do
if s[k]<>' ' then emp:=false
else k:=k+1;
if not emp then writeln(g, s)
end
end;
\xF0E7
6. Посимвольне читання тексту
Приклад 6. У тексті з рядками необмеженої довжини записано слова в латинському алфавіті, довжина яких не перевищує 255. Слова відокремлюються пропусками в довільній кількості та з рядка на рядок не переносяться. Треба визначити кількість повторень першого слова в подальшому тексті.
Для розв’ язання задачі треба
прочитати перше слово (якщо воно взагалі є в тексті), а далі по одному читати слова й порівнювати їх із першим, за рівності збільшуючи значення лічильника.
Слово є лексичною одиницею, або лексемою тексту, тобто такою послідовністю, що має самостійне значення, тому функцію читання слова з тексту назвемо getlex (взяти лексему). Ось її заголовок:
function getlex(var f:text; var lex:string):boolean.
З її виклику повертається ознака наявності слова в частині тексту, прочитаній за її виклику. Слово зберігається як значення параметра-змінної lex (лексема), а коли його в решті тексту немає, значенням стає порожній рядок. Отже, нехай s1, s2 – рядки, nrep – лічильник повторень у такому алгоритмі:
nrep:=0;
if getlex(f, s1) then
begin
while getlex(f, s2) do
if s1=s2 then nrep:=nrep+1;
writeln(nrep)
end
else writeln('у тексті немає слів');
Щоб прочитати слово, треба
від поточного доступного символу прочитати пропуски та кінці рядків, що передують слову, та запам’ ятати його символи в рядковій змінній.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021