Раздел «Алгоритмы».CalculatorPAS:

Калькулятор на Pascal

//(C) Igor Kvasov
{калькулятор; поддерживает операции +, -, *, унарный -}
var ch:char;

function expr:longint; forward;

function readnum:longint;
var
    n,sign:longint;
begin
    if ch='-' then begin sign:=-1; read(ch); end else sign:=1;
    if ch='(' then begin read(ch); readnum:=SIGN*expr; exit; end;
    n:=0;
    while ch in ['0'..'9'] do begin
        n:=n*10+ord(ch)-ord('0');
        read(ch);
    end;
    readnum:=n*sign;
end;

function mult:longint;
var a:longint;
begin
    a:=readnum;
    while ch='*' do begin
        read(ch);
        a:=a*readnum;
    end;
    mult:=a;
end;

function expr:longint;
var
    a:longint;
    oper:char;
begin
    a:=mult;
    while ch in ['-','+'] do begin
        oper:=ch; read(ch);
        if oper='-' then a:=a-mult else a:=a+mult;
    end;
    if ch=')' then read(ch);
    expr:=a;
end;

begin
    read(ch);
    writeln(expr);
end.

-- IgorKvasov? - 28 Dec 2004

AlgorithmClasifyForm
Type: Теория
Scope:  
Strategy:  
Complexity: Low