Cod sursa(job #328448)

Utilizator ionutz32Ilie Ionut ionutz32 Data 2 iulie 2009 09:41:13
Problema Evaluarea unei expresii Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.55 kb
var v:array[1..100] of char;
i:longint;
f,g:text;
function tr(var x:longint):longint;
         forward;
function p(var x:longint):longint;
         var a:longint;
         begin
         a:=tr(x);
         while (v[x]='+') or (v[x]='-') do
               begin
               x:=x+1;
               if v[x-1]='+' then
                  a:=a+tr(x)
               else
                   a:=a-tr(x);
               end;
         p:=a;
         end;
function fct(var x:longint):longint;
         forward;
function tr(var x:longint):longint;
         var b:longint;
         begin
         b:=fct(x);
         while (v[x]='*') or (v[x]='/') do
               begin
               x:=x+1;
               if v[x-1]='*' then
                  b:=b*fct(x)
               else
                   b:=b div fct(x);
               end;
         tr:=b;
         end;
function fct(var x:longint):longint;
         var c:longint;
         begin
         if v[x]='(' then
            begin
            x:=x+1;
            c:=p(x);
            x:=x+1;
            end
         else
             begin
             c:=0;
             while (v[x]>='0') and (v[x]<='9') do
                   begin
                   c:=c*10+ord(v[x])-48;
                   x:=x+1;
                   end;
             end;
         fct:=c;
         end;
begin
assign(f,'evaluare.in');
assign(g,'evaluare.out');
reset(f);rewrite(g);
while not eoln(f) do
      begin
      i:=i+1;
      read(f,v[i]);
      end;
i:=1;
write(g,p(i));
close(f);close(g);
end.