Pagini recente » Cod sursa (job #126516) | Cod sursa (job #14345) | Cod sursa (job #3199580) | Cod sursa (job #56780) | Cod sursa (job #2637649)
#include <bits/stdc++.h>
using namespace std;
int where = 0;
char s[100002];
int solveMultiplicationDivision();
int solveBracketsNumbers();
int solveAdditionSubtraction() {
int value = solveMultiplicationDivision();
while (s[where] == '+' or s[where] == '-') {
if (s[where] == '+') {
where += 1; //skip +
value += solveMultiplicationDivision();
} else {
where += 1; //skip -
value -= solveMultiplicationDivision();
}
}
return value;
}
int solveMultiplicationDivision() {
int value = solveBracketsNumbers();
while (s[where] == '*' or s[where] == '/') {
if (s[where] == '*') {
where += 1; //skip *
value *= solveBracketsNumbers();
} else {
where += 1; //skip /
value /= solveBracketsNumbers();
}
}
return value;
}
int solveBracketsNumbers() {
int result = 0;
if (s[where] == '(') {
where += 1; //skip (
result = solveAdditionSubtraction();
where += 1; //skip )
} else {
while ('0' <= s[where] and s[where] <= '9') {
result = result * 10 + (s[where] - '0');
where += 1;
}
}
return result;
}
int main() {
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin.getline(s, 100002);
fout << solveAdditionSubtraction();
return 0;
}