Рекурсивная процедура, переставляющая символы строки в обратном порядке - 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'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д