Cod sursa(job #843940)

Utilizator RusuAlexeiRusu Alexei RusuAlexei Data 28 decembrie 2012 16:59:23
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.3 kb
program expresie;
  var f1,f2:text;
      s,bufin:array [0..100000] of char;
      i:longint;
function factor:longint; forward;

function termen:longint;
  var x:longint;
  begin
    x:=factor;
    while (s[i]='*') or (s[i]='/') do
      begin
        if s[i]='*' then begin inc(i); x:=x*factor; end
                    else begin inc(i); x:=x div factor; end;

      end;
    termen:=x;
  end;
function expresie:longint;
  var x:longint;
  begin
    x:=termen;
    while (s[i]='+') or (s[i]='-') do
      begin
        if s[i]='+' then begin inc(i); inc(x,termen); end
                    else begin inc(i); dec(x,termen); end;
      end;
    expresie:=x;
  end;
function factor:longint;
  var x:longint;
  begin
    x:=0;
    if s[i]='(' then
                  begin
                    inc(i);
                    x:=expresie;
                    inc(i);
                  end
                else while s[i] in ['0'..'9'] do
                       begin
                         x:=x*10+ord(s[i])-48;
                         inc(i);
                       end;
    factor:=x;
  end;


begin
  assign(f1,'evaluare.in');
  reset(f1);
  settextbuf(f1,bufin);
  assign(f2,'evaluare.out');
  rewrite(f2);
  readln(f1,s);
  writeln(f2,expresie);
  close(f1);
  close(f2);
end.