Pagini recente » Cod sursa (job #1497275) | Cod sursa (job #3005341) | Cod sursa (job #2923215) | Cod sursa (job #2225220) | Cod sursa (job #2714901)
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int PlusMinus(int &pos);
int MultiplyDivide(int &pos);
int BracketsValues(int &pos);
string s;
int PlusMinus(int &pos) {
int ans = MultiplyDivide(pos);
while((s[pos] == '+' || s[pos] == '-') && pos < (int)s.size()) {
pos++;
if(s[pos - 1] == '+')
ans += MultiplyDivide(pos);
else
ans -= MultiplyDivide(pos);
}
return ans;
}
int MultiplyDivide(int &pos) {
int ans = BracketsValues(pos);
while((s[pos] == '*' || s[pos] == '/') && pos < (int)s.size()) {
pos++;
if(s[pos - 1] == '*')
ans *= BracketsValues(pos);
else
ans /= BracketsValues(pos);
}
return ans;
}
int BracketsValues(int &pos) {
int ans = 0;
if(s[pos] == '(') {
pos++;
ans = PlusMinus(pos);
pos++;
} else {
while(pos < (int)s.size() && '0' <= s[pos] && s[pos] <= '9') {
ans = ans * 10 + (s[pos] - '0');
pos++;
}
}
return ans;
}
int main() {
cin >> s;
int pos = 0;
cout << PlusMinus(pos);
return 0;
}