Все вхождения подстроки в строку заменить инверсными - 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. Функция выполняет следующие действия:

  1. Инициализирует переменную p нулём.
  2. В цикле повторяет следующие действия: а) Инициализирует счётчик 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-в до тех пор, пока условие в пункте в) выполняется.
  3. Возвращает значение переменной s. В основной программе:
  4. Объявлены две переменные: s и sub. Значение переменной s установлено в строку 'one two one three four one five', а значение переменной sub — в строку 'one'.
  5. Вызывается функция MyReplace, передавая в качестве аргументов переменные s и sub.
  6. Результат функции присваивается переменной s.
  7. Выводится значение переменной s.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы