Рекурсивная процедура, переставляющая символы строки в обратном порядке - Free Pascal
Формулировка задачи:
var str, str1: string; n: integer; procedure stroki(str: string; var str1: string); begin if n < 2 then str := '' else begin stroki(str[n-1], str1); str1 := str1+str[n]; end; end; begin readln(str); n := length(str); stroki(str, str1); writeln(str1); end.
Решение задачи: «Рекурсивная процедура, переставляющая символы строки в обратном порядке»
textual
Листинг программы
procedure StrReverse(var S: string; k: integer); var t: char; begin if k<length(s) div 2 then begin t := S[k]; S[k] := S[length(s)-k+1]; S[length(s)-k+1] := t; StrReverse(s,k+1); end; end; var s: string; begin S := '1234567890'; writeln(S); StrReverse(S,1); writeln(S); end.
Объяснение кода листинга программы
- Объявлена рекурсивная процедура StrReverse для перестановки символов строки в обратном порядке
- В процедуре объявлена переменная t типа char
- Если значение k меньше половины длины строки S, то
- Значение переменной t присваивается символу S[k]
- Значение символа S[k] присваивается значению S[длина строки S - k + 1]
- Значение символа S[длина строки S - k + 1] присваивается значению переменной t
- Вызывается рекурсивная процедура StrReverse с аргументами S и k+1
- В основной части программы объявлена переменная s типа string со значением '1234567890'
- Выводится значение переменной s на экран
- Вызывается процедура StrReverse с аргументами s и 1
- Выводится значение переменной s на экран, которое должно быть '0987654321'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д