Pagini recente » Rating Guzun Alexandru (xandru) | Cod sursa (job #3233044) | Statisticile problemei Pastrama si Afacerile | Cod sursa (job #2144641) | Cod sursa (job #1484294)
#include<bits/stdc++.h>
using namespace std;
string s;
int i = 0;
long long calc_expr();
long long calc_factor() {
long long ans = 0;
if(s[i] == '(') {
++i;
ans = calc_expr();
++i;
} else {
while(s[i] >= '0' && s[i] <= '9') {
ans = ans * 10 + (s[i] - '0');
//cout << ans << " " <<"da\n";
++i;
}
}
return ans;
}
long long calc_term() {
long long f1 = calc_factor();
long long ans = f1;
while(s[i] == '*' || s[i] == '/') {
if(s[i] == '*') {
++i;
ans *= calc_factor();
}
if(s[i] == '/') {
++i;
ans /= calc_factor();
}
}
return ans;
}
long long calc_expr() {
long long t1 = calc_term();
long long ans = t1;
while(s[i] == '+' || s[i] == '-') {
if(s[i] == '+') {
++i;
ans += calc_term();
}
if(s[i] == '-') {
++i;
ans -= calc_term();
}
}
return ans;
}
int main()
{
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin >> s;
fout << calc_expr();
}