Рекурсия - 19 стр.

UptoLike

21
Пример 8 Вводится с клавиатуры без ошибок формула следующего вида:
<формула> ::= <цифра> | (< формула > <знак> < формула >)
<знак> ::= + | – | *
<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Используя рекурсивную функцию без параметров, вычислить значение
вводимой формулы.
program Rec_8;
function Formula: integer;
var c, op: char; { op – знак операции }
x, y: integer;
begin
read(c);
if (c>='0') and (c<='9') then
{цифра - формула}
Formula:=ord(c)-ord('0')
else { начало формулы вида (x op y) }
begin
x:=Formula;
read(op);
y:=Formula;
case op of
'+': Formula:=x+y;
'-': Formula:=x-y;
'*': Formula:=x*y;
end;
read(c) {пропуск скобки ')'}
end
end;