Cod sursa(job #743641)

Utilizator RadioactivMihai Preguza Radioactiv Data 5 mai 2012 13:25:29
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.29 kb
program expresie;
var t:array[1..100001] of char;
    n:longint;



function adunare:longint;forward;

function paranteze:longint;
var p:longint;
Begin
  p:=0;
  if t[n]='('
    then
      begin
        inc(n);
        p:=adunare;
        inc(n)
      end
    else
      while (t[n]>='0') and (t[n]<='9') do
        begin
          p:=p*10+ord(t[n])-48;
          inc(n);
        end;
  paranteze:=p;
End;


function inmultire:longint;
var i:longint;
Begin
  i:=paranteze;
//  inc(n);
  while (t[n]='*') or (t[n]='/') do
          if t[n]='*'
        then
          begin
          inc(n);
           i:=i*paranteze
           end
        else
        begin
        inc(n);
           i:=i div paranteze;end;
  inmultire:=i;
End;

function adunare:longint;
var c:longint;
Begin
  c:=inmultire;
//  inc(n);
 while (t[n]='+') or (t[n]='-') do
       if t[n]='+'
        then
          begin
          inc(n);
          c:=c+inmultire;
          end
         else
        begin
        inc(n);
          c:=c-inmultire;
          end;
  adunare:=c;
End;


BEGIN
  assign(input,'evaluare.in');
  reset(input);
  readln(t);
  close(input);
  assign(output,'evaluare.out');
  rewrite(output);
  n:=1;
  write(adunare);
  close(output);
END.