Все вхождения подстроки в строку заменить инверсными - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д