Задание 8 Урок 22 (вопрос по итерации выражения)

Задание 8 Урок 22

Напишите функцию, которая получает на вход произвольную строку вида:

5*(3+4)-7*9+3*(2+(2-7))

(арифметическое выражение со скобками любого уровня вложенности и операциями умножения, вычитания и сложения)

и в качестве ответа возвращает результат этого выражения.

Рекомендация: сначала убедитесь, что число открывающих скобок, равно числу закрывающих.

Примечание: алгоритмически похожая задача использовалась на собеседовании стажеров в DataArt.

var
  S :string;
  N :integer ;

function recurseStringHandle(s: string; i: integer): string;
begin
  if (i = length(s)) then
  begin
    result := s[i]
  end
  else
  begin
    result :=  s[i] + recurseStringHandle(s, i+1);
  end;
end;

begin
    //writeln('Vvedite virajenie');
    //readln(S);
    S := '5*(3+4)-7*9+3*(2+(2-7))';
    N := 1;
    writeln('resultat raven: ');
    writeln(recurseStringHandle(S, N));
    readln();
end.   

консоль:

resultat raven: 
5*(3+4)-7*9+3*(2+(2-7))
vedro-compota's picture

как рекурсивное чтение и конкатенация строки работает, можно двигаться дальше, ближе к решению)

_____________
матфак вгу и остальная классика =)