Примеры задач

Строки символов


Заменить все вхождения подстроки Str1 на подстроку Str2 (подстроки вводятся с клавиатуры).

Методика решения

Например:
Строка: я пошла в кино;
Подстрока 1: я;
Подстрока 2: ты;
Результат: ты пошла в кино.

Используемые переменные:
St – строка;
Str1 – подстрока 1;
Str2 – подстрока 2;
K – номер позиции.

Для реализации данной программы понадобятся следующие стандартные процедуры и функции для работы со строками:
Функция pos(s, c) определяет номер позиции, начиная с которой строка s первый раз входит в строку с ;
Функция copy(s, n, k) – из строки s выделяет k символов, начиная с n -го символа;
Процедура вставки insert(s1, s2, n) – строка s1 вставляется в строку s2 , начиная с n – го символа.
Процедура удаления delete(s, k, n) – из строки s удаляется n символов, начиная с k - того.

Считываем с экрана строку st и подстроки str1 и str2 .
Затем с помощью функции pos(str1, st) определяем, начиная с какой позиции подстрока str1 первый раз входит в строку st . С помощью процедуры delete(st,k,length(str1)) удаляем из строки st подстроку str1 . Далее, используя процедуру insert(str2, st, k) , вставляем на это место подстроку str2 .
Эти действия необходимо повторять, пока есть вхождения подстроки str1 в строку st (пока pos(str1, st) < > 0 ).
Выводим полученную строку st на экран.

Листинг программы

Program ex4_4;
Uses Crt;
Var st,str1,str2:String; k:byte;
BEGIN
Clrscr;
Writeln('Введите строку');
Readln(st);
Writeln('Введите подстроку,которую нужно заменить');
Readln(str1);
Writeln('Введите подстроку,которой нужно заменить');
Readln(str2);
While Pos(str1,st)<>0 Do
Begin
k:=Pos(str1,st);
Delete(st,k,Length(str1));
Insert(str2,st,k);
End;
Write(st);
Readkey;
End.

Запустить программу






Назад

Закрыть