ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »