Cod sursa(job #174343)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl 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.