Cod sursa(job #2271284)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 28 octombrie 2018 12:53:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>

#define MAXN 100000

using namespace std;

char s[MAXN+5], *p=s;

long termen();
long factor();

long eval()
{
  int r=termen();

  while( *p=='+' || *p=='-' )
    if( *p=='+' )
    {
      p++;
      r+=termen();
    }
    else
    {
      p++;
      r-=termen();
    }

  return r;
}

long termen()
{
  int r=factor();

  while( *p=='*' || *p=='/' )
    if( *p=='*' )
    {
      p++;
      r*=factor();
    }
    else
    {
      p++;
      r/=factor();
    }

  return r;
}

long factor()
{
  int r=0;

  if( *p=='(' )
  {
    p++;
    r=eval();
    p++;
  }
  else
    while( *p>='0' && *p<='9' )
    {
      r=r*10+(*p-'0');
      p++;
    }

  return r;
}

int main()
{
  freopen( "evaluare.in", "r", stdin );
  freopen( "evaluare.out", "w", stdout );

  scanf( "%s", &s );
  printf( "%d\n", eval() );

  return 0;
}