Cod sursa(job #2506548)

Utilizator MihclerioVladimir Chim Mihclerio Data 8 decembrie 2019 13:12:47
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include<bits/stdc++.h>

#define all(s) s.begin(),s.end()
#define rc(x) return cout<<x<<endl,0
#define forn(i,n) for(int i=0;i<int(n);i++)

#define pb push_back
#define mp make_pair
#define fr first
#define sc second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int nmax=1e5+19;
const int mod=6669666;

using namespace std;

string s;
int i;

int baga1();
int baga2();
int baga3();

int baga3()

{
  int x=0;
  if(s[i]=='(')
  {
    i++;
    x=baga1();
    i++;
  } else
  {
    while(s[i]>='0' && s[i]<='9') x=x*10+(s[i++]-48);
  }
  //cout<<"baga3 "<<x<<"\n";
  return x;
}

int baga2()
{
  int x=baga3();
  if(s[i]=='*')
  {
    i++;
    x*=baga3();
  } else
  if(s[i]=='/')
  {
    i++;
    x/=baga3();
  }
  //cout<<"baga2 "<<x<<"\n";
  return x;
}

int baga1()
{
  int x=baga2();
  if(s[i]=='+')
  {
    i++;
    x+=baga2();
  } else
  if(s[i]=='-')
  {
    i++;
    x-=baga2();
  }
  //cout<<"baga1 "<<x<<"\n";
  return x;
}

int main()
{
  ios_base::sync_with_stdio(0); cin.tie();
  freopen("evaluare.in","r",stdin);
  freopen("evaluare.out","w",stdout);
  cin>>s;
  cout<<baga1();
}