Cod sursa(job #1420315)

Utilizator ButnaruButnaru George Butnaru Data 18 aprilie 2015 10:37:20
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1 kb
program evaluare;
var s:ansistring;
    n,i,j:longint;
    f1,f2:text;
function eval:longint; forward;
function termen:longint; forward;
function factor:longint; forward;
function eval:longint;
var x:longint;
begin
x:=termen;
while (i<=n) and (s[i] in ['+','-']) do
case s[i] of
'+':begin i:=i+1; x:=x+termen; end;
'-':begin i:=i+1; x:=x-termen; end;
end;
eval:=x;
end;
function termen:longint;
var x:longint;
begin
x:=factor;
while (i<=n) and (s[i] in ['*','/']) do
case s[i] of
'*':begin i:=i+1; x:=x*factor; end;
'/':begin i:=i+1; x:=x div factor; end;
end;
termen:=x;
end;
function factor:longint;
var x:longint;
begin
if s[i]='(' then begin
i:=i+1;
factor:=eval;
i:=i+1;
end else begin
x:=0;
while (i<=n) and (s[i] in ['0'..'9']) do begin
x:=x*10+ord(s[i])-48;
i:=i+1;
end;
factor:=x;
end;
end;
begin
assign (f1,'evaluare.in');
assign (f2,'evaluare.out');
reset (f1);
rewrite (f2);
readln (f1,s);
n:=length(s); i:=1;
writeln (f2,eval);
close (f1);
close (f2);
end.