Pagini recente » Cod sursa (job #1127394) | Cod sursa (job #876240) | Cod sursa (job #2409550) | Cod sursa (job #1944783) | Cod sursa (job #1583998)
#include <iostream>
#include <fstream>
using namespace std;
char s[100001];
int crr = 0;
long long sum = 0;
long eval();
long termen();
long factor();
long eval() {
long r = termen();
while(s[crr] == '+' || s[crr] == '-') {
if(s[crr] == '+') {
crr++;
r += termen();
} else {
crr++;
r -= termen();
}
}
return r;
}
long termen() {
long r = factor();
while(s[crr] == '*' || s[crr] == '/') {
if(s[crr] == '*') {
crr++;
r *= factor();
} else {
crr++;
r /= factor();
}
}
return r;
}
long factor() {
long r = 0;
if(s[crr] == '(') { // subexpr
crr++; // (
r = eval();
crr++; // )
} else { // numar
while(isdigit(s[crr])) {
r = r*10 + s[crr] - '0';
crr++;
}
}
return r;
}
int main() {
ifstream in("evaluare.in");
ofstream out("evaluare.out");
in >> s;
out << eval();
return 0;
}