Cod sursa(job #1376565)

Utilizator robertstrecheStreche Robert robertstreche Data 5 martie 2015 17:51:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

#define LMAX 100005

using namespace std;

int poz;
char S[LMAX];

int eval();
int produs();

inline int paranteza()
{   int val=0;
    if (S[poz]=='(')
      poz++,
      val=eval(),
      poz++;
    else
      while (S[poz]>='0' && S[poz]<='9')
       val=val*10+S[poz++]-'0';
   return val;
}
inline int produs()
{
    int val=paranteza();
    while (S[poz]=='*' || S[poz]=='/')
      if (S[poz++]=='*')val*=paranteza();
      else val/=paranteza();
    return val;
}
inline int eval()
{
    int val=produs();
    while (S[poz]=='+' || S[poz]=='-')
     if (S[poz++]=='+')val+=produs();
     else val-=produs();
    return val;
}
int main()
{
   freopen("evaluare.in","r",stdin);
   freopen("evaluare.out","w",stdout);

   scanf("%s",S);
   printf("%d",eval());

   fclose(stdin);
   fclose(stdout);
}