ПАСКАЛЬ: ОБРОБКА ТЕКСТІВ
Алгоритми розв’ язання задач із обробки таких текстів часто мають загальний вигляд
while not eof(f) do
begin
readln(f, s); {s має тип string}
обробка рядка s;
end.
Приклад 5. Написати процедуру копіювання тексту за умови, що рядки тексту мають довжину не більше 80, а рядки порожні або такі, що містять лише пpопуски, не копіюються.
Після читання чергового рядка початкового тексту треба визначити, чи є в ньому хоча б один символ, відмінний від пропусків. Тільки в цьому випадку він копіюється в текст g:
procedure cpnonemp(var f, g : text);
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;
Задача
9. На вхід програми подається послідовність груп рядків тексту. Групи відділяються рядком із першим символом '='. За останньою групою такого рядка може не бути. Група може бути порожньою. Рядки в групах непорожні й містять числа, відокремлені пропусками в довільній кількості. Всі рядки разом із наступними повідомленнями треба виводити в інший текст. Якщо в рядку 3 числа, то слід визначити, чи задають вони довжини сторін трикутника, і надрукувати повідомлення "трикутник" або "не трикутник". За іншої кількості чисел треба повідомити: "помилкові дані" (див. задачу 12.17). Для кожної групи слід надрукувати слова "кількість рядків: " і число її рядків, що задають трикутники, та рядок, яким група відокремлена від наступної. Для останньої групи такий рядок не друкується. Наприклад, за послідовності рядків