Cod sursa(job #640223)

Utilizator ion824Ion Ureche ion824 Data 24 noiembrie 2011 22:36:59
Problema Evaluarea unei expresii Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.11 kb
Program expresie;
 var a:array [1..100001] of char;
     i:longint;
     fi,fo:text;
function rez():longint;forward;
function factor():longint;
 var v:longint;
begin
 v:=0;
 if a[i]='(' then begin inc(i); v:=rez(); inc(i); end
              else while (a[i]>='0') and (a[i]<='9') do begin
                                          v:=v*10+ord(a[i])-48;
                                          inc(i);
                                          end;

 factor:=v;
end;
function termen():longint;
 var v:longint;
begin
 v:=factor;
  while (a[i]='*') or (a[i]='/') do
   if a[i]='*' then begin inc(i); v:=v*factor; end
                else begin inc(i); v:=v div factor; end;
 termen:=v;
end;
function rez():longint;
 var v:longint;
begin
 v:=termen();
  while (a[i]='+') or (a[i]='-') do
   if a[i]='+' then begin
                     inc(i);
                      v:=v+termen;
                     end
    else begin inc(i); v:=v-termen; end;
 rez:=v;
end;
begin
 assign(fi,'expresie.in');
  assign(fo,'expresie.out');
 reset(fi); rewrite(fo);
  read(fi,a);  i:=1;
 write(fo,rez);
 close(fo);
end.