Pagini recente » Cod sursa (job #2356831) | Cod sursa (job #1071277) | Cod sursa (job #1202111) | Cod sursa (job #1454319) | Cod sursa (job #589130)
Cod sursa(job #589130)
type vector=array[1..100000]of char;
var s:vector; n:longint;
buf:vector; t:text;
procedure init;
var f:text;
begin
assign(f,'evaluare.in');
reset(f);
settextbuf(f,buf);
n:=0;
while not eof(f) do
begin
while not eoln(f) do
begin inc(n); read(f,s[n]); end;
readln(f);
end;
close(f);
end;
function rup(s:vector;left,right:longint):longint;
var i:longint; k:int64;
begin
k:=0;
for i:=left to right do
k:=k*10+ord(s[i])-ord('0');
rup:=k;
end;
function eval(s:vector;left,right:longint):longint;
var i,p1,p2,p3,p4,k:longint;
begin
p1:=0;p2:=0;p3:=0;p4:=0;k:=0;
for i:=left to right do
if s[i]='(' then inc(k) else
if s[i]=')' then dec(k) else
if k=0 then
begin
if s[i]='+' then p1:=i;
if s[i]='-' then p2:=i;
if s[i]='*' then p3:=i;
if s[i]='/' then p4:=i;
end;
if (p1>p2)and(p1>0) then eval:=eval(s,left,p1-1)+eval(s,p1+1,right) else
if p2>0 then eval:=eval(s,left,p2-1)-eval(s,p2+1,right) else
if (p3>p4)and(p3>0) then eval:=eval(s,left,p3-1)*eval(s,p3+1,right) else
if p4>0 then eval:=eval(s,left,p4-1) div eval(s,p4+1,right) else
if s[left]='(' then eval:=eval(s,left+1,right-1) else
eval:=rup(s,left,right);
end;
begin
init;
assign(t,'evaluare.out');
rewrite(t);
writeln(t,eval(s,1,n));
close(t);
end.