Pagini recente » Cod sursa (job #3145064) | Cod sursa (job #1833871) | Cod sursa (job #2419625) | Cod sursa (job #265089) | Cod sursa (job #720231)
Cod sursa(job #720231)
var s:string;
h,f:text;
function s2i(s:string):integer;
var r:integer; c:integer;
begin
val(s,r,c);
s2i:=r;
end;
function eval(left, right:integer):integer;
var p1,p2,p3,p4,i,pp:integer;
begin
p1:=0;p2:=0;p3:=0;p4:=0; pp:=0;
for i:=left to right do
if s[i]='(' then inc(pp)
else if s[i]=')' then dec(pp)
else if pp=0 then
case s[i] of
'+':p1:=i;
'-':p2:=i;
'*':p3:=i;
'/':p4:=i;
end;
if p1>p2 then eval:=eval(left,p1-1) + eval(p1+1,right)
else if p2>0 then eval:=eval(left,p2-1) - eval(p2+1,right)
else if p3>p4 then eval:=eval(left,p3-1) * eval(p3+1,right)
else if p4>0 then eval:=eval(left,p4-1) div eval(p4+1,right)
else if s[left]='(' then eval:=eval(left+1, right-1)
else eval:=s2i(copy(s,left, right-left+1));
end;
begin
assign(f,'evaluare.in');
reset(f);
readln(f,s);
assign(h,'evaluare.out');
rewrite(h);
writeln(h,eval(1, length(s)));
close(f);
close(h);
readln;
end.