Cod sursa(job #174343)
Utilizator | Data | 8 aprilie 2008 19:54:51 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 10 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.51 kb |
program evaluare;
var f,g:text;
c:char;
function termen:longint; forward;
function factor:longint; forward;
function eval:longint;
var r:longint;
begin
r:=termen;
if (c='+')or(c='-') then
if c='+' then begin
read(f,c);
r:=r+termen;
end
else begin
read(f,c);
r:=r-termen;
end;
eval:=r;
end;
function termen:longint;
var r:longint;
begin
r:=factor;
if (c='*') or (c='/') then
if c='*' then begin
read(f,c);
r:=r*factor;
end
else begin
read(f,c);
r:=r div factor;
end;
termen:=r;
end;
function factor:longint;
var r:longint;
begin
r:=0;
if (c='(') then begin
read(f,c);
r:=eval;
read(f,c);
end
else while (c>='0') and(c<='9') do
begin
r:=r*10+ord(c)-ord('0');
read(f,c);
end;
factor:=r;
end;
begin
assign(f,'evaluare.in'); reset(f);
assign(g,'evaluare.out'); rewrite(g);
read(f,c);
writeln(g,eval);
close(g);
close(f);
end.