Pagini recente » Cod sursa (job #1523636) | Cod sursa (job #1511812) | Cod sursa (job #1206885) | Cod sursa (job #2795768) | Cod sursa (job #543805)
Cod sursa(job #543805)
var a:array[1..1000000] of char;
n:longint;
f:text;
buf:array[1..1000] of char;
procedure citire;
var f:text;
s:string;
i:byte;
begin
assign(f,'evaluare.in');
reset(f);
n:=0;
settextbuf(f,buf);
while not eoln(f) do
begin
read(f,s);
for i:=1 to length(s) do
begin
inc(n);
a[n]:=s[i];
end;
end;
close(f);
end;
function a2r(left,right:longint):longint;
var i,j:longint;
begin
a2r:=0;
for i:=left to right do
a2r:=a2r*10 + ord(a[i])-ord('0');
end;
function eval(left,right:longint):longint;
var i,p1,p2,p3,p4,pp:longint;
begin
p1:=0;
p2:=0;
p3:=0;
p4:=0;
pp:=0;
for i:=left to right do
if a[i]='('then inc(pp)
else if a[i]=')'then dec(pp)
else if pp=0 then
case a[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 a[left]='(' then eval:=eval(left+1,right-1)
else eval:=a2r(left,right);
end;
begin
citire;
assign(f,'evaluare.out');
rewrite(f);
settextbuf(f,Buf);
write(f,eval(1,n));
close(f);
end.