Cod sursa(job #936253)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 6 aprilie 2013 13:39:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
using namespace std;

char s[100010];
int k=0;

void _read()
{
   freopen("evaluare.in","r",stdin);
   freopen("evaluare.out","w",stdout);
   scanf("%s",&s);

}

long se();
long t();

long f()
{
   long r=se();
    while(s[k]=='+' || s[k]=='-')
        if(s[k]=='+')
            {
                k++;
               r+=se();
               }
            else {
                    k++;
                r-=se();
                 }

     return r;
}

long se()
{
  long r=t();
    while(s[k]=='*' || s[k]=='/')
     if(s[k]=='*'){ k++; r*=t(); }
        else { k++; r/=t(); }

    return r;
}

long t()
{
  long r=0;
  if(s[k]=='(')
  {
     k++;
     r=f();
     k++;
  }
  else
     while(s[k]>='0' && s[k]<='9')
      {
        r=r*10+s[k]-48;
        k++;
      }

  return r;
}

int main()
{
 _read();

printf("%ld",f());
return 0;
}