Pagini recente » Cod sursa (job #2705003) | Cod sursa (job #1234419) | Cod sursa (job #412634) | Cod sursa (job #3189203) | Cod sursa (job #210348)
Cod sursa(job #210348)
var f,g:text;
a:array[0..100010]of char;
v:array[0..50010]of longint;
s:array[0..50010]of char;
l,i,n,h,c,j,cn,ch,k,y:longint;
x:string;
function calc(k:char;a,b:longint):longint;
begin
if (k='+')then calc:=a+b else
if (k='-')then calc:=a-b else
if (k='*')then calc:=a*b else
if (k='/')then calc:=a div b;
end;
function verif(a,b:char):boolean;
begin
verif:=false;
if (a<>'*')and(a<>'/')then
if (b='*')or(b='/')then verif:=true;
end;
begin
assign(f,'evaluare.in');
assign(G,'evaluare.out');
reset(f);
rewrite(g);
while not eoln(f) do
begin
inc(l);
read(f,a[l]);
end;
inc(l);
a[l]:=')';
i:=1;
while (i<=l)do
begin
if (a[i]>='0')and(a[i]<='9')then
begin
x:='';
while (a[i]>='0')and(a[i]<='9')do
begin
x:=x+a[i];
inc(i);
end;
inc(n);
val(x,v[n],c);
dec(i);
end else
if (a[i]<>')')then
begin
inc(h);
s[h]:=a[i];
end else
begin
ch:=h;
cn:=n;
while (s[ch]<>'(')and(ch>0)do
begin
dec(ch);
dec(cn);
end;
k:=v[cn];
y:=ch+1;
if (ch<h)then
begin
for j:=cn+1 to n do
begin
k:=calc(s[y],k,v[j]);
inc(Y);
end;
n:=cn;
if (k<>v[n])then v[n]:=k;
h:=ch;
end;
if (h>0)then dec(h);
end;
while verif(a[i],s[h]) do
begin
dec(n);
v[n]:=calc(s[h],v[n],v[n+1]);
dec(h);
end;
inc(i);
end;
write(g,v[1]);
close(f);
close(g);
end.