Pagini recente » Cod sursa (job #2622004) | Cod sursa (job #1456286) | Cod sursa (job #1085878) | Cod sursa (job #525406) | Cod sursa (job #720315)
Cod sursa(job #720315)
var a:array[1..100000] of char; i,n,r:longint; fin,fout:text; c:char;
function myeval(s1:string):longint;
var cod:longint; r:real;
begin
val(s1, r, cod);
myeval:=trunc(r);
end;
{procedure afis(n:longint);
var i:integer;
begin
for i:=1 to n do write(a[i]);
writeln;
end;}
function eval(left, right:longint):longint;
var i,j,p,p1,p2,p3,p4:longint; s:string;
begin
p1:=0; p2:=0; p3:=0; p4:=0;
p:=0;
for i:=left to right do
if a[i]='(' then inc(p)
else if a[i]=')' then dec(p)
else if p=0 then
begin
if a[i]='+' then p1:=i;
if a[i]='-' then p2:=i;
if a[i]='*' then p3:=i;
if a[i]='/' then p4:=i;
end;
if p1>0 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>0 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
begin
s:='';
for j:=left to right do
s:=s+a[j];
eval:=myeval(s);
end;
end;
begin
assign(fin,'evaluare.in');
assign(fout,'evaluare.out');
rewrite(fout);
reset(fin); i:=0;
while not eoln(fin) do
begin
inc(i); read(fin,c);
a[i]:=c;
end;
close(fin);
n:=i;
r:=eval(1, i);
writeln(fout,r);
close(fout);
end.