Рекурсивная процедура, переставляющая символы строки в обратном порядке - 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'