Pagini recente » Cod sursa (job #1637135) | Cod sursa (job #1613906) | Cod sursa (job #2407254) | Cod sursa (job #1089222) | Cod sursa (job #1504959)
const cifre:set of char=['0','1','2','3','4','5','6','7','8','9'];
var s:array[1..100000]of char;
n,p,rez:longint;
f:text;
function cifra(c:char):byte;
var cifra2:byte;
begin
case c of
'0':cifra2:=0;
'1':cifra2:=1;
'2':cifra2:=2;
'3':cifra2:=3;
'4':cifra2:=4;
'5':cifra2:=5;
'6':cifra2:=6;
'7':cifra2:=7;
'8':cifra2:=8;
'9':cifra2:=9;
end;
cifra:=cifra2;
end;
function factor:longint;forward;
function termen:longint;forward;
function eval:longint;
var r:longint;
begin
r:=factor;
while (s[p]='+')or(s[p]='-')do
if s[p]='+' then
begin
inc(p);
r:=r+factor;
end
else
begin
inc(p);
r:=r-factor;
end;
eval:=r;
end;
function factor:longint;
var r:longint;
begin
r:=termen;
while (s[p]='*')or(s[p]='/')do
if s[p]='*' then
begin
inc(p);
r:=r*termen
end
else
begin
inc(p);
r:=r div termen
end;
factor:=r
end;
function termen:longint;
var r:longint;
begin
r:=0;
if s[p]='(' then
begin
inc(p);
r:=eval;
inc(p)
end
else
begin
while s[p] in cifre do
begin r:=r*10+cifra(s[p]);inc(p); end;
end;
termen:=r
end;
begin
assign(f,'evaluare.in');
reset(f);
n:=0;
while not(eoln(f)) do
begin
inc(n);
read(f,s[n]);
end;
close(f);
p:=1;
rez:=eval;
assign(f,'evaluare.out');
rewrite(f);
writeln(f,rez);
close(f);
end.