Pagini recente » Borderou de evaluare (job #3367487) | Borderou de evaluare (job #3367480) | Borderou de evaluare (job #3367485) | Borderou de evaluare (job #3367478) | Cod sursa (job #3367478)
// #pragma GCC optimize("O3,unroll-loops,fast-math")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
const int Nmax=2e5+5,inf=1e9,MOD=1e9+7;
string s;
int n,i;
int eval();
int factor() {
if (s[i]=='(') {
i++;
int rez=eval();
i++;
return rez;
}
int rez=0;
while (i<n && isdigit(s[i])) rez=rez*10+(s[i++]-'0');
return rez;
}
int term() {
int rez=factor();
while (i<n && (s[i]=='*' || s[i]=='/')) {
if (s[i++]=='*') rez*=factor();
else rez/=factor();
}
return rez;
}
int eval() {
int rez=term();
while (i<n && (s[i]=='+' || s[i]=='-')) {
if (s[i++]=='+') rez+=term();
else rez-=term();
}
return rez;
}
int main() {
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin>>s;
n=s.size();
i=0;
cout<<eval();
return 0;
}