Pagini recente » Cod sursa (job #1855253) | Cod sursa (job #1480444) | Cod sursa (job #1262139) | Cod sursa (job #2298384) | Cod sursa (job #2277858)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
long ix;
string exp;
const string num = "0123456789";
long termen();
long factor();
long eval();
long eval() {
long r = termen();
while (exp[ix] == '+' || exp[ix] == '-') {
if (exp[ix] == '+' ) {
ix++;
r += termen();
} else if (exp[ix] == '-') {
ix++;
r -= termen();
}
}
return r;
}
long termen() {
long r = factor();
while (exp[ix] == '*' || exp[ix] == '/') {
if (exp[ix] == '*') {
ix++;
r *= factor();
} else if (exp[ix] == '/') {
ix++;
r /= factor();
}
}
return r;
}
long factor() {
long r = 0;
if (exp[ix] == '(') {
ix++;
r = eval();
ix++;
} else {
while (exp[ix] >= '0' && exp[ix] <= '9') {
r = r * 10 + exp[ix] - '0';
ix++;
}
}
return r;
}
int main() {
ifstream iff("evaluare.in");
ofstream off("evaluare.out");
iff >> exp;
ix = 0;
off << eval();
return 0;
}