Cod sursa(job #1327650)

Utilizator ccygnusMaygnus Pop ccygnus Data 26 ianuarie 2015 22:27:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<cstdio>
char c[100002];
int i;
int evalexpr();
int t();
int nr();
int evalexpr()
{
    int rasp=t();
    while(c[i]=='+' || c[i]=='-')
      {
      if (c[i]=='+')
          {
          ++i;
          rasp+=t();
          }
      if (c[i]=='-')
          {
          ++i;
          rasp-=t();
          }
      }
    return rasp;
}
int t()
{
    int rasp=nr();
    while(c[i]=='*' || c[i]=='/')
      {
      if (c[i]=='*')
          {
          ++i;
          rasp*=nr();
          }
      if (c[i]=='/')
          {
          ++i;
          rasp/=nr();
          }
      }
    return rasp;
}
int nr()
{
    int rasp=0;
    if (c[i]=='(')
        {
        ++i;
        rasp=evalexpr();
        ++i;
        }
    else
        {
        while(c[i]<='9' && c[i]>='0')
          {
          rasp=rasp*10+c[i]-'0';
          ++i;
          }
        }
    return rasp;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(c);
    printf("%d\n",evalexpr());
return 0;
}