ВУЗ:
Составители:
Рубрика:
59
{$R-} var L:longint; w:word; errc:byte; S:string[10];
begin
S:=′125375′;
w:=0; {начало очистки w}
val(S,L,errc); {вызов преобразования}
if errc= 0 then begin
if (L>=0) and (L<=65535) then {всё в порядке}
w:=L
else writeln(′ошибка диапазона при преобразовании ′,L);
end {then}
else writeln (′ошибка в строке ′,S,′ в символе ′,S[errc]); end.
Типовые алгоритмы обработки строк
Пример 12:
В тексте слово SL1 заменить на слово SL2.
Обозначение: р – позиция вхождения слова SL1 в строку t.
var t:string; SL1, SL2:string[20];
p:byte; L1, L2:byte;
begin writeln(′ввод текста′); readln(t);
writeln(′SL1′); readln(SL1);
L1:=length(SL1);
writeln(′SL2′); readln(SL2);
L2:=length(SL2);
p:=pos(SL1,t);
while p<>0 do begin delete(t,p,L1);
{удаляем слово SL1 из текста}
insert(SL2,t,p); {вст. слово SL2 в текст}
p:=pos(SL1,t);
end;
writeln(t); end.
Рис.5. Блок-схема примера 12
Ввод t
Ввод SL1,
SL2
p:=pos(SL1,t)
начало
нет
да
Удаляем из текста
SL1 вставляем SL2
с поз. Р.
р:=pos(SL1,t)
Определяем
длины слов
P<>0
Печать t
конец
60
Пример 13:
Распечатать текст по предложениям. В тексте предложения
разделяются *.
var t:string; L, p:byte;
begin readln(t);
t:= t + ′*′; L:= length(t);
p:= pos(′*′, t);
while p<>0 do
begin writeln(copy(t, 1, p-1);
Рис. 6 Блок-схема примера 13 delete(t, 1, p);
{ или t:=copy(t, p+1, l-p)};
p:=pos(′*′, t);
end; end.
Пример 14:
Печать текста по строкам, длина которых, не превышает 50 – ти
символов. Разрыв строки выполнять по пробелу.
Обозначение: t – весь текст; d – длина всего текста; L – длина строки а;
p – позиция пробел; a – строка не более 50-ти символов.
Ввод t
P<>0
коне
ц
P:=pos(
′
*
′
,t)
t:= t + ′*′
P:=pos(
′
*
′
, t)
Печать предложения
Удаляем это
предложение
начало
нет
да
Добавляем в конец строки ′*′,
чтобы обработка предложений
была одинакова
{$R-} var L:longint; w:word; errc:byte; S:string[10]; Пример 13:
begin
Распечатать текст по предложениям. В тексте предложения
S:=′125375′;
w:=0; {начало очистки w} разделяются *.
val(S,L,errc); {вызов преобразования}
if errc= 0 then begin начало
if (L>=0) and (L<=65535) then {всё в порядке}
w:=L
else writeln(′ошибка диапазона при преобразовании ′,L); Ввод t Добавляем в конец строки ′*′,
end {then} чтобы обработка предложений
else writeln (′ошибка в строке ′,S,′ в символе ′,S[errc]); end. была одинакова
t:= t + ′*′
Типовые алгоритмы обработки строк P:=pos(′*′,t)
Пример 12:
В тексте слово SL1 заменить на слово SL2. нет
P<>0 конец
Обозначение: р позиция вхождения слова SL1 в строку t.
var t:string; SL1, SL2:string[20]; да
начало p:byte; L1, L2:byte; Печать предложения
begin writeln(′ввод текста′); readln(t);
Ввод t
writeln(′SL1′); readln(SL1); Удаляем это
L1:=length(SL1); предложение
Ввод SL1,
SL2 writeln(′SL2′); readln(SL2); var t:string; L, p:byte;
L2:=length(SL2); P:=pos(′*′, t)
begin readln(t);
p:=pos(SL1,t) p:=pos(SL1,t); t:= t + ′*′; L:= length(t);
while p<>0 do begin delete(t,p,L1); p:= pos(′*′, t);
Определяем
{удаляем слово SL1 из текста} while p<>0 do
длины слов
insert(SL2,t,p); {вст. слово SL2 в текст} begin writeln(copy(t, 1, p-1);
нет p:=pos(SL1,t);
P<>0 Рис. 6 Блок-схема примера 13 delete(t, 1, p);
end; { или t:=copy(t, p+1, l-p)};
да writeln(t); end.
p:=pos(′*′, t);
Удаляем из текста end; end.
SL1 вставляем SL2
с поз. Р. Печать t Пример 14:
р:=pos(SL1,t)
Печать текста по строкам, длина которых, не превышает 50 ти
конец символов. Разрыв строки выполнять по пробелу.
Обозначение: t весь текст; d длина всего текста; L длина строки а;
Рис.5. Блок-схема примера 12 p позиция пробел; a строка не более 50-ти символов.
59 60
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »
