Pagini recente » Cod sursa (job #3196382) | Cod sursa (job #705634) | Cod sursa (job #860260) | Cod sursa (job #769393) | Cod sursa (job #3245668)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int factor(), termen();
string EVAL;
int poz = 0;
int evaluare() {
int R = termen();
while (EVAL[poz] == '-' || EVAL[poz] == '+') {
if (EVAL[poz] == '-') {
poz++;
R -= termen();
}
else {
if (EVAL[poz] == '+') {
poz++;
R += termen();
}
}
}
return R;
}
int termen() {
int F = factor();
while (EVAL[poz] == '*' || EVAL[poz] == '/') {
if (EVAL[poz] == '*') {
poz++;
F *= factor();
}
else {
if (EVAL[poz] == '/') {
poz++;
F /= factor();
}
}
}
return F;
}
int factor() {
long long r = 0;
if (EVAL[poz] == '(') {
poz++;
r = evaluare();
poz++;
}
else {
while (EVAL[poz] >= '0' && EVAL[poz] <= '9') {
r = r * 10 + (EVAL[poz] - '0');
poz++;
}
}
return r;
}
int main() {
cin >> EVAL;
EVAL += '$';
cout << evaluare() << '\n';
return 0;
}