Cod sursa(job #768227)

Utilizator sab-cNibas B36 sab-c Data 16 iulie 2012 13:45:30
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.42 kb
program evaluare_exp;
var s:array[1..1000000] of char;
   i:longint;
   fi,fo:text;
function expresie:longint;forward;
function factor:longint;
var x:longint;
begin
 x:=0;
 if s[i]='(' then begin
                   i:=i+1;
                   x:=expresie;
                   i:=i+1;
                   end
                   else
 while (s[i]<='9') and(s[i]>='0') do  begin
                                      x:=x*10+ord(s[i])-48;
                                      i:=i+1;
                                      end;
 factor:=x;
end;
function termen:longint;
var y:longint;
begin
y:=factor;
while (s[i]='*') or (s[i]='/') do
                               if s[i]='*' then begin
                                            i:=i+1;
                                      y:=y*factor;end
                                      else begin
                                      i:=i+1;
                                      y:=y div factor;
                                      end;
termen:=y;
end;
function expresie:longint;
var z:longint;
begin
z:=termen;
while (s[i]='+') or(s[i]='-') do
                              if s[i]='+' then begin i:=i+1; z:=z+termen;end
                                   else begin i:=i+1; z:=z-termen;end;
expresie:=z;
end;
begin
assign(fi,'evaluare.in');reset(fi);
read(fi,s);
assign(fo,'evaluare.out');rewrite(fo);i:=1;
write(fo,expresie);
close(fi);close(fo);
end.