Pagini recente » Cod sursa (job #336975) | Cod sursa (job #1934452) | Cod sursa (job #136373) | Cod sursa (job #1647349) | Cod sursa (job #493292)
Cod sursa(job #493292)
program evaluare_expr;
const MAX=100001;
type sir=array[1..MAX] of char;
var s:sir; f,g:text; n:integer; p:integer;
procedure citire;
begin
n:=0;
While not seekeoln(f) do
begin
inc(n);
Read(f,s[n]);
end;
end;
function factori:longint; forward;
function expresii:longint; forward;
function termeni:longint; {adunare / scadere}
var r:longint;
begin
r:=factori;
While (s[p]='+')or(s[p]='-') do
begin
If s[p]='+' then
begin
inc(p);
r:=r+factori;
end;
If s[p]='-' then
begin
inc(p);
r:=r-factori;
end;
end;
termeni:=r;
end;
function factori:longint; {inmultire / impartire }
var r:longint;
begin
r:=expresii;
While (s[p]='*')or(s[p]='/') do
begin
If s[p]='*' then
begin
inc(p);
r:=r*expresii;
end;
If s[p]='/' then
begin
inc(p);
r:=r div expresii;
end;
end;
factori:=r;
end;
function expresii:longint;
var r:longint;
begin
r:=0;
If s[p]='(' then
begin
inc(p);
r:=termeni;
inc(p);
end
else
While (s[p]>='0')and(s[p]<='9') do
begin
r:=10*r+ord(s[p])-48;
inc(p);
end;
expresii:=r;
end;
begin
Assign(f,'evaluare.in'); Reset(f);
Assign(g,'evaluare.out');Rewrite(g);
citire; Close(f);
p:=1;
Write(g,termeni);
Close(g);
end.