Cod sursa(job #1070329)

Utilizator Mihai_ChihaiMihai Chihai Mihai_Chihai Data 31 decembrie 2013 17:40:49
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.29 kb
   var s:ansistring;
       i:longint;

   function factor:longint; forward;
   function factor2:longint; forward;

   function eval:longint;
       var v:longint;
       begin
        v:=factor;

        while (s[i]='+') or (s[i]='-') do
           begin
             if s[i]='+' then begin inc(i); v:=v+factor; ; end
                  else begin inc(i); v:=v-factor; end;
             end;


           eval:=v;
        end;

   function factor:longint;
       var v:longint;
   begin
     v:=factor2;

     while (s[i] in ['*','/']) do
       begin
         if s[i]='*' then begin inc(i); v:=v*factor2; end
               else begin inc(i); v:=v div  factor2; end;
         end;
       factor:=v;
     end;

   function factor2:longint;
      var v:longint;
   begin
       v:=0;


       if s[i]='(' then begin inc(i); v:=eval; inc(i); end
           else
             while (s[i] in ['0'..'9']) do
                begin
                  v:=(v*10)+(ord(s[i])-48);
                  inc(i);
                end;
           factor2:=v;
       end;
   begin
     assign(input,'evaluare.in');
     reset(input);
     readln(s);
     s:=s+'#';
     assign(output,'evaluare.out');
     rewrite(output);
     i:=1;
     write(eval);
     close(output);
   end.