Pagini recente » Cod sursa (job #20406) | Cod sursa (job #2838544) | Cod sursa (job #2091921) | Cod sursa (job #945848) | Cod sursa (job #301271)
Cod sursa(job #301271)
const max=100001;
p:longint=0;
var e:array[1..max]of char;
function evaluare:longint;forward;
function cifra(c:char):boolean;
var o:byte;
begin
o:=ord(c);
if(o>=48)and(o<=57)then cifra:=true
else cifra:=false;
end;
function termen:longint;
begin
if e[p]='(' then
begin
inc(p);
termen:=evaluare;
inc(p);
end
else
begin
termen:=0;
while cifra(e[p]) do
begin
termen:=termen*10+ord(e[p])-48;
inc(p);
end;
end;
end;
function factor:longint;
var ok:boolean;
begin
ok:=false;
factor:=termen;
repeat
case e[p] of
'*':begin
inc(p);
factor:=factor*termen;
end;
'/':begin
inc(p);
factor:=factor div termen;
end;
else ok:=true;
end;
until ok;
end;
function evaluare:longint;
var ok:boolean;
begin
ok:=false;
evaluare:=factor;
repeat
case e[p] of
'+':begin
inc(p);
evaluare:=evaluare+factor;
end;
'-':begin
inc(p);
evaluare:=evaluare-factor;
end;
else ok:=true;
end;
until ok;
end;
begin
assign(input,'evaluare.in');
reset(input);
assign(output,'evaluare.out');
rewrite(output);
while not eoln do begin
inc(p);
read(e[p]);
end;
e[p+1]:=' ';
p:=1;
writeln(evaluare);
close(input);
close(output);
end.