Решаем задачи Абрамян на Паскале. Recur16

Recur16. Вывести значение целочисленного выражения, заданного в виде строки $$S$$. Выражение определяется следующим образом:
<выражение>::= <терм>| <выражение>+<терм>| <выражение>- <терм>
<терм>::= <элемент>| <терм>* <элемент>
<элемент>::= <цифра>| (<выражение>)

Решение:

 

Другие задачи из раздела Recur можно посмотреть здесь.

Комментарии:

Комментарии 1

  • Алгоритм. В Foo ищем в выражении справа налево индекс l первого оператора «+» или «-» , который находится вне скобок. Если нашли — результат равен Foo(s, k, l-1) (+/-) Term(s, l+1, n). Иначе результат равен Term(s, k, n). В Term аналогично, но для оператора «*». В Elem результат или цифра, или выражение в скобках. Чтобы его посчитать нужно кинуть строку без крайних скобок в Foo.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *