Pagini recente » Cod sursa (job #2035513) | Cod sursa (job #2228445) | Cod sursa (job #767467) | Cod sursa (job #2029101) | Cod sursa (job #2344012)
#include <fstream>
#include <string.h>
std::ifstream fin("evaluare.in");
std::ofstream fout("evaluare.out");
const int MAX_N = 100000;
char op[3][4] = {"+-", "*/", ""};
char s[5 + MAX_N];
char *p = s;
int eval(int a, int b, char c) {
if (c == '+')
return a + b;
else if (c == '-')
return a - b;
else if (c == '*')
return a * b;
else if (c == '/')
return a / b;
}
int vals = 0;
int solve(int lev) {
int x, y;
if (lev == 2) {
if (*p == '(') {
++p;
x = solve(0);
++p;
} else {
for (x = 0; '0' <= *p && *p <= '9'; ++p)
x = x * 10 + (*p) - '0';
}
} else {
for (x = solve(lev + 1); *p != '\0' && strchr(op[lev], *p); x = y) {
y = eval(x, solve(lev + 1), *p++);
}
}
return x;
}
int main() {
fin.get(s, MAX_N, '\n');
fout << solve(0) << '\n';
fclose(stdin);
fclose(stdout);
return 0;
}