Рекурсивная процедура, переставляющая символы строки в обратном порядке - Free Pascal

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

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

Листинг программы
  1. var
  2. str, str1: string; n: integer;
  3. procedure stroki(str: string; var str1: string);
  4. begin
  5. if n < 2 then str := ''
  6. else
  7. begin
  8. stroki(str[n-1], str1);
  9. str1 := str1+str[n];
  10. end;
  11. end;
  12.  
  13. begin
  14. readln(str);
  15. n := length(str);
  16. stroki(str, str1);
  17. writeln(str1);
  18. end.
Компилятор выдает ошибку: Индекс находился вне границ массива. Что не так?

Решение задачи: «Рекурсивная процедура, переставляющая символы строки в обратном порядке»

textual
Листинг программы
  1. procedure StrReverse(var S: string; k: integer);
  2. var  t: char;
  3. begin
  4. if k<length(s) div 2 then
  5.  begin
  6.   t := S[k];
  7.   S[k] := S[length(s)-k+1];
  8.   S[length(s)-k+1] := t;
  9.   StrReverse(s,k+1);
  10.  end;
  11. end;
  12. var s: string;
  13. begin
  14.   S := '1234567890';
  15.   writeln(S);
  16.   StrReverse(S,1);
  17.   writeln(S);
  18. end.

Объяснение кода листинга программы

  1. Объявлена рекурсивная процедура StrReverse для перестановки символов строки в обратном порядке
  2. В процедуре объявлена переменная t типа char
  3. Если значение k меньше половины длины строки S, то
    • Значение переменной t присваивается символу S[k]
    • Значение символа S[k] присваивается значению S[длина строки S - k + 1]
    • Значение символа S[длина строки S - k + 1] присваивается значению переменной t
    • Вызывается рекурсивная процедура StrReverse с аргументами S и k+1
  4. В основной части программы объявлена переменная s типа string со значением '1234567890'
  5. Выводится значение переменной s на экран
  6. Вызывается процедура StrReverse с аргументами s и 1
  7. Выводится значение переменной s на экран, которое должно быть '0987654321'

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


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

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

14   голосов , оценка 4.357 из 5

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

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

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