Pagini recente » Cod sursa (job #254336) | Cod sursa (job #2982609) | Cod sursa (job #2399361) | Cod sursa (job #763279) | Cod sursa (job #2812509)
#include <cctype>
#include <iostream>
#include <string>
#define E __expression
#define T __termen
#define F __factor
int __expression();
int __termen();
int __factor();
static int p = 0;
static std::string s;
int __expression() {
int ans = T();
while (s[p] == '+' || s[p] == '-') {
if (s[p] == '+') {
p++;
ans += T();
} else {
p++;
ans -= T();
}
}
return ans;
}
int __termen() {
int f = F();
while (s[p] == '*' || s[p] == '/') {
if (s[p] == '*') {
p++;
f *= F();
} else {
p++;
f /= F();
}
}
return f;
}
int __factor() { // nr sau exp
int r;
if (s[p] == '(') {
p++;
r = E();
p++;
} else {
r = 0;
while (isdigit(s[p])) {
r = r * 10 + (s[p] - '0');
p++;
}
}
return r;
}
int main(int argc, char **argv) {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
std::cin >> s;
std::cout << E() << std::endl;
return 0;
}