Все вхождения подстроки в строку заменить инверсными - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Чем заменить функцию ReplaceStr, чтобы все вхождения подстроки в строку заменялись инверсными?

Решение задачи: «Все вхождения подстроки в строку заменить инверсными»

textual
Листинг программы
  1. function MyReplace(s, What : string) : string;
  2. var
  3.   i, sp, p : integer;
  4. begin
  5.   p := 0;
  6.   repeat
  7.     sp := p;
  8.     p := p + Pos(What, Copy(s, p + 1, Length(s)));
  9.     if sp <> p then
  10.       for i := 1 to Length(What) do
  11.         s[p + Length(What) - i] := What[i];
  12.   until sp = p;
  13.   MyReplace := s;
  14. end;
  15.  
  16. var
  17.   s : string = 'one two one three four one five';
  18.   sub : string = 'one';
  19. begin
  20.   s := MyReplace(s, sub);
  21.   writeln(s);
  22. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы