Pagini recente » Cod sursa (job #2431889) | Cod sursa (job #1750852) | Cod sursa (job #311248) | Cod sursa (job #1104885) | Cod sursa (job #210238)
Cod sursa(job #210238)
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: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;
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);
if (s[h]='*')or(s[h]='/')then
begin
while (s[h]<>'(')and(h>0)do
begin
dec(n);
v[n]:=calc(s[h],v[n],v[n+1]);
dec(h);
end;
if (h>0)then dec(h);
end;
end else
if (a[i]<>')')then
begin
inc(h);
s[h]:=a[i];
end else
begin
while (s[h]<>'(')and(h>0)do
begin
dec(n);
v[n]:=calc(s[h],v[n],v[n+1]);
dec(h);
end;
if (h>0)then dec(h);
end;
inc(i);
end;
write(g,v[1]);
close(f);
close(g);
end.