Cod sursa(job #1226772)

Utilizator valen.valentinValentin Valeanu valen.valentin Data 7 septembrie 2014 13:42:38
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.08 kb
program evaluare;
var n,i:longint;
    s:ansistring;
    f1,f2:text;
function termen:longint; forward;
function eval:longint;
 var x:longint;
  begin
   x:=termen;
   while (i<=n) and (s[i] in ['+','-']) do begin
    case s[i] of
     '+':begin inc(i); x:=x+termen; end;
     '-':begin inc(i); x:=x-termen; end;
    end;
   end;
 eval:=x;
end;
function factor:longint; forward;
function termen:longint;
 var x:longint;
begin
 x:=factor;
 while (i<=n) and (s[i] in ['*','/']) do begin
  case s[i] of
   '*':begin inc(i); x:=x*factor; end;
   '/':begin inc(i); x:=x div factor; end;
  end;
 end;
 termen:=x;
end;
function factor:longint;
var x:longint;
begin
 if (s[i]='(') then begin
  inc(i);
  factor:=eval;
  inc(i);
 end else begin
  x:=0;
   while (i<=n) and (s[i] in ['0'..'9']) do begin
    x:=x*10+ord(s[i])-ord('0');
    inc(i);
   end;
 factor:=x;
 end;
end;
begin
 assign (f1,'evaluare.in');
 assign (f2,'evaluare.out');
 reset (f1);
 rewrite (f2);
 readln (f1,s); i:=1;
 n:=length(s);
 writeln (f2,eval);
 close (f1);
 close (f2);
end.