Pagini recente » Cod sursa (job #2734066) | Cod sursa (job #2841054) | Cod sursa (job #1626743) | Cod sursa (job #2279734) | Cod sursa (job #2667252)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
typedef long long ll;
string ex;
int idx, len;
ll eval();
ll termen();
ll factor();
ll eval(){
ll ans = termen();
while(ex[idx] == '+' || ex[idx] == '-'){
if(ex[idx] == '+'){
idx++;
ans += termen();
break;
} else if(ex[idx] == '-'){
idx++;
ans -= termen();
break;
}
}
return ans;
}
ll termen(){
ll ans = factor();
while(ex[idx] == '*' || ex[idx] == '/'){
if(ex[idx] == '*'){
idx++;
ans *= factor();
break;
} else if(ex[idx] == '/'){
idx++;
ans /= factor();
break;
}
}
return ans;
}
ll factor(){
ll ans = 0;
if(ex[idx] == '('){
idx++;
ans = eval();
idx++;
} else {
while(ex[idx] >= '0' && ex[idx] <= '9'){
ans = ans * 10 + (ex[idx] - '0');
idx++;
}
}
return ans;
}
int main()
{
fin >> ex;
len = ex.length();
fout << eval();
return 0;
}