Pagini recente » Cod sursa (job #335657) | Cod sursa (job #1205150) | Cod sursa (job #1848753) | Cod sursa (job #1090165) | Cod sursa (job #1226772)
program evaluare;
var n,i:longint;
s:ansistring;
f1,f2:text;
function termen:longint; forward;
function eval:longint;
var x:longint;
begin
x:=termen;
while (i<=n) and (s[i] in ['+','-']) do begin
case s[i] of
'+':begin inc(i); x:=x+termen; end;
'-':begin inc(i); x:=x-termen; end;
end;
end;
eval:=x;
end;
function factor:longint; forward;
function termen:longint;
var x:longint;
begin
x:=factor;
while (i<=n) and (s[i] in ['*','/']) do begin
case s[i] of
'*':begin inc(i); x:=x*factor; end;
'/':begin inc(i); x:=x div factor; end;
end;
end;
termen:=x;
end;
function factor:longint;
var x:longint;
begin
if (s[i]='(') then begin
inc(i);
factor:=eval;
inc(i);
end else begin
x:=0;
while (i<=n) and (s[i] in ['0'..'9']) do begin
x:=x*10+ord(s[i])-ord('0');
inc(i);
end;
factor:=x;
end;
end;
begin
assign (f1,'evaluare.in');
assign (f2,'evaluare.out');
reset (f1);
rewrite (f2);
readln (f1,s); i:=1;
n:=length(s);
writeln (f2,eval);
close (f1);
close (f2);
end.