Cod sursa(job #2363647)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 3 martie 2019 14:31:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

#define MAXN 100000

using namespace std;

ifstream cin( "evaluare.in" );
ofstream cout( "evaluare.out" );

char s[MAXN], *p=s;

int expresie();

int numar( )
{
  int ans=0;

  while( '0'<=*p && *p<='9' )
  {
    ans=ans*10+(*p-'0');

    p++;
  }

  return ans;
}

int factor( )
{
  int ans;

  if( *p=='(' )
  {
    p++;
      ans=expresie();
    p++;
  }
  else
    ans=numar();

  return ans;
}

int termen( )
{
  int ans=factor();

  while( *p=='*' || *p=='/' )
  {
    p++;

    if( *(p-1)=='*' )
      ans*=factor();
    else
      ans/=factor();
  }

  return ans;
}

int expresie( )
{
  int ans=termen();

  while( *p=='+' || *p=='-' )
  {
    p++;

    if( *(p-1)=='+' )
      ans+=termen();
    else
      ans-=termen();
  }

  return ans;
}

int main()
{
  cin>>s;

  cout<<expresie();

  return 0;
}