Все вхождения подстроки в строку заменить инверсными - Free Pascal
Формулировка задачи:
Чем заменить функцию ReplaceStr, чтобы все вхождения подстроки в строку заменялись инверсными?
Решение задачи: «Все вхождения подстроки в строку заменить инверсными»
textual
Листинг программы
- function MyReplace(s, What : string) : string;
- var
- i, sp, p : integer;
- begin
- p := 0;
- repeat
- sp := p;
- p := p + Pos(What, Copy(s, p + 1, Length(s)));
- if sp <> p then
- for i := 1 to Length(What) do
- s[p + Length(What) - i] := What[i];
- until sp = p;
- MyReplace := s;
- end;
- var
- s : string = 'one two one three four one five';
- sub : string = 'one';
- begin
- s := MyReplace(s, sub);
- writeln(s);
- end.
Объяснение кода листинга программы
В данном коде реализована функция MyReplace, которая принимает два аргумента типа string — s и What. Функция выполняет следующие действия:
- Инициализирует переменную p нулём.
- В цикле повторяет следующие действия: а) Инициализирует счётчик sp значением переменной p. б) p увеличивается на величину Pos(What, Copy(s, p + 1, Length(s))). в) Если sp не равно p, то выполняется цикл (для i от 1 до Length(What)): а) s[p + Length(What) — i] присваивается значение What[i]. г) Повторение действий 2-в до тех пор, пока условие в пункте в) выполняется.
- Возвращает значение переменной s. В основной программе:
- Объявлены две переменные: s и sub. Значение переменной s установлено в строку 'one two one three four one five', а значение переменной sub — в строку 'one'.
- Вызывается функция MyReplace, передавая в качестве аргументов переменные s и sub.
- Результат функции присваивается переменной s.
- Выводится значение переменной s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д