program acmb;
type
stack=array[1..200] of char;
stack2=array[1..200] of real;
var
top,i,j,h:integer;
temp:real;
ch,w:char;
a,s:stack;
ss:stack2;
Function t(p1:char):integer;
begin
case p1 of
'#':t:=-1;
'(':t:=0;
'+':t:=1;
'-':t:=1;
'*':t:=2;
'/':t:=2;
')':t:=3;
end;
end;
function comp(var s:stack2):real;
var i,k:integer;
x:real;
begin
i:=1;top:=0;
ch:=a[i];
while ch<>'#' do
begin
case ch of
'0'..'9':begin
x:=0;
while(ch<>' ')do
begin x:=x*10+ord(ch)-ord('0');
i:=i+1; ch:=a[i];
end;
top:=top+1;
end;
'+':begin x:=s[top-1]+s[top];dec(top); end;
'-':begin x:=s[top-1]-s[top];dec(top); end;
'*':begin x:=s[top-1]*s[top];dec(top); end;
'/':begin
if s[top]<>0 then
begin x:=s[top-1]/s[top];dec(top);end
end;
end;{case}
s[top]:=x; i:=i+1; ch:=a[i];
end;{while}
comp:=trunc(s[top]*1000+0.5)/1000;
end;{function}
procedure push(vars:stack;ch:char);
begin
inc(top);
s[top]:=ch;
end;
procedure pop(vars:stack);
begin
dec(top);
end;
function readtop(s:stack):char;
begin
readtop:=s[top];
end;
begin
while not eof do
begin
push(s,'#');
j:=1;
read(ch);
while ch<>'#'do
begin
if ch in['0'..'9'] then
begin
while ch in['0'..'9'] do
begin
a[j]:=ch;
inc(j);
read(ch);
end;
a[j]:=' ';inc(j);
end
else
begin
case ch of
'+','-','*','/': begin
w:=readtop(s); {取出栈顶符号}
while t(ch)<=t(w)do
begin
a[j]:=w;inc(j);
pop(s);
w:=readtop(s);
end;
push(s,ch);
end;
'(':push(s,ch);
')':begin
while s[top]<>'('do
begin
a[j]:=s[top];inc(j);
pop(s);
end;
top:=top-1;
end;
end; {end case}
read(ch);
end;{end while}
end;
w:=readtop(s);
while w<>'#' do
begin
a[j]:=w;inc(j);
pop(s);w:=readtop(s);
end;
a[j]:='#';pop(s);
fillchar(ss,sizeof(ss),0);
temp:=comp(ss);
writeln(temp:0:0);
end;
end.
/**************************************************************
Problem: 2145
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/