Pagini recente » Cod sursa (job #1051397) | Cod sursa (job #2410955) | Cod sursa (job #1116503) | Cod sursa (job #457666) | Cod sursa (job #1573197)
#include <cstdio>
using namespace std;
char S[100010], *p=S;
long long eval();
long long termen();
long long factor();
long long eval() {
long long rezultat = termen();
while(*p == '+' || *p == '-') {
if(*p == '+') {
p++;
rezultat += termen();
}
else if(*p == '-') {
p++;
rezultat -= termen();
}
}
return rezultat;
}
long long termen() {
long long rezultat = factor();
while(*p == '*' || *p == '/') {
if(*p == '*') {
p++;
rezultat *= factor();
} else if(*p == '/') {
p++;
rezultat /= factor();
}
}
return rezultat;
}
long long factor() {
long long rezultat = 0;
if(*p == '(') {
p++; // (
rezultat = eval();
p++; // )
} else
while(*p >= '0' && *p <= '9') {
rezultat = rezultat * 10 + (*p - '0');
p++;
}
return rezultat;
}
int main() {
freopen("evaluare.in", "r", stdin); scanf("%s", &S);
freopen("evaluare.out", "w", stdout); printf("%lld\n", eval());
return 0;
}