Cod sursa(job #207131)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 11 septembrie 2008 21:06:43
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#define N 100010
char sir[N],*p=sir;
long produs();
long termen();

long suma()
{long s=produs();
 while(*p=='+'||*p=='-')
 {switch(*p)
  {case '+':++p;s+=produs();break;
   case '-':++p;s-=produs();break;
  }
 }
 return s;
}

long produs()
{long s=termen();
 while(*p=='*'||*p=='/')
 {switch(*p)
  {case '*':++p;s*=termen();break;
   case '/':++p;s/=termen();break;
  }
 }
return s;
}

long termen()
{long s=0;
 if(*p=='(')
 {++p;
  s=suma();
  ++p;
 }
 else
 {while(*p>='0'&&*p<='9')
  {s=s*10+*p-48;
   ++p;
  }
 } 
 return s;
}

int main ()
{ fgets(sir, N, fopen("eval.in", "r"));
    fprintf(fopen("eval.out", "w"), "%ld\n", suma());
    return 0;

}