Pagini recente » Cod sursa (job #1094043) | Cod sursa (job #1988055) | ONIS 2014, Runda 4 | Cod sursa (job #1840318) | Cod sursa (job #1685790)
var n,i:longint;
s:array[1..100001] of char;
f,g:text;
function str2int(st,dr:longint):longint;
var i,k:longint;
begin
k:=0;
for i:=st to dr do begin
k:=k*10+ord(s[i])-48;
end;
// writeln(k);
str2int:=k;
end;
function eval(st,dr:longint):longint;
var i,j,k:longint;
b:boolean;
begin
k:=0;
b:=true;
j:=0;
for i:=dr downto st do begin
if s[i]=')' then dec(k);
if s[i]='(' then inc(k);
if (k=0) and (s[i]='+') then begin
eval:=eval(st,i-1)+eval(i+1,dr);
b:=false;
break;
end;
if (k=0) and (s[i]='-') then begin
eval:=eval(st,i-1)-eval(i+1,dr);
b:=false;
break;
end;
if ((s[i]='*') or (s[i]='/')) and (k=0) then j:=i;
end;
if b and (j>0) then begin
if s[j]='*' then eval:=eval(st,j-1)*eval(j+1,dr);
if s[j]='/' then eval:=eval(st,j-1) div eval(j+1,dr);
b:=false;
end;
if b and (s[st]='(') then begin
eval:=eval(st+1,dr-1);
b:=false;
end;
if b then eval:=str2int(st,dr);
end;
begin
assign(f,'evaluare.in');
assign(g,'evaluare.out');
reset(f);
rewrite(g);
n:=0;
while not eof(f) do begin
inc(n);
read(f,s[n]);
end;
// writeln(n);
// read(s);
// n:=length(s);
// for i:=1 to n do write(s[i]);
// writeln('l');
write(g,eval(1,n-2));
end.