Задана строка, которая содержит в себе правильную запись со скобками, например ((ав)с(d((l)f))). Удалить из строки все символы, кроме скобок. Задачу нужно решить с помощью рекурсивной процедуры или функции.
Вроде функция сделана, но почему то работает не совсем правильно:оставляет только первіе четыре скобки. Помогите пожалуйста, а то не могу понять, в чем причина.
Код
function recurs(s: string): string;
begin
if (s='') or (pos('(',s)=0) and (pos(')', s)=0) then recurs:=''
else
if (pos('(',s) > pos(')', s)) and (0< pos(')', s)) or (pos('(',s)=0) then
recurs:= ')'+recurs(copy(s, pos(')', s)+1, length(s)-pos(')', s)-2))
else
recurs:= '(' +recurs(copy(s, pos('(', s)+1, length(s)-pos('(', s)-2));
end;
begin
if (s='') or (pos('(',s)=0) and (pos(')', s)=0) then recurs:=''
else
if (pos('(',s) > pos(')', s)) and (0< pos(')', s)) or (pos('(',s)=0) then
recurs:= ')'+recurs(copy(s, pos(')', s)+1, length(s)-pos(')', s)-2))
else
recurs:= '(' +recurs(copy(s, pos('(', s)+1, length(s)-pos('(', s)-2));
end;
Вызываю функцию так:
Код
writeln(recurs('((ав)с(d((l)f)))'));