Pagini recente » Cod sursa (job #1999651) | Cod sursa (job #2167951) | Cod sursa (job #2938498) | Cod sursa (job #3191148) | Cod sursa (job #295875)
Cod sursa(job #295875)
const max=100010;
var s:array[1..max] of char;
f,f2:text;
m,p:longint;
function termen:longint;forward;
function factor:longint;forward;
function eval:longint;
var r:longint;
begin
r:=termen;
while (s[p]='+') or (s[p]='-') do
begin
if s[p]='+' then
begin
p:=p+1;
r:=r+termen;
break;
end;
if s[p]='-' then
begin
p:=p+1;
r:=r-termen;
break;
end;
end;
eval:=r;
end;
function termen:longint;
var r:longint;
begin
r:=factor;
while (s[p]='*') or (s[p]='/') do
begin
if s[p]='*' then
begin
p:=p+1;
r:=r*factor;
break;
end;
if s[p]='/' then
begin
p:=p+1;
r:=r div factor;
break;
end;
end;
termen:=r;
end;
function factor:longint;
var r:longint;
begin
r:=0;
if s[p]='(' then
begin
p:=p+1;
r:=eval;
p:=p+1;
end
else
begin
while (s[p]>='0') and (s[p]<='9') do
begin
r:=r * 10 + (ord(s[p])- ord('0'));
p:=p+1;
end;
end;
factor:=r;
end;
begin
assign(f,'evaluare.in');
assign(f2,'evaluare.out');
reset(f);
m:=0;
while not eoln(f) do
begin
m:=m+1;
read(f,s[m]);
end;
close(f);
p:=1;
rewrite(f2);
writeln(f2,eval);
close(f2);
end.