Pagini recente » Cod sursa (job #591685) | Cod sursa (job #2112383) | Cod sursa (job #84652) | Cod sursa (job #1840900) | Cod sursa (job #1890977)
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
#include <cmath>
#include <map>
#include <cstring>
#include <queue>
#include <stack>
#include <algorithm>
#define DN 105
#define DL 5005
#define x first
#define y second
#define LL long long
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
// ifstream fin("input.txt");
// ofstream fout("output.txt");
int get_expression(string &expr, int &ind);
int get_factor(string &expr, int &ind) {
int res = 0;
if (expr[ind] == '(') {
res = get_expression(expr, ++ind);
++ind;
} else {
while (ind < expr.size() && expr[ind] >= '0' && expr[ind] <= '9')
res = res * 10 + expr[ind++] - '0';
}
return res;
}
int get_term(string &expr, int &ind) {
int res = get_factor(expr, ind);
while (ind != expr.size() && (expr[ind] == '*' || expr[ind] == '/')) {
if (expr[ind] == '*')
res *= get_factor(expr, ++ind);
else
res /= get_factor(expr, ++ind);
}
return res;
}
int get_expression(string &expr, int &ind) {
int res = get_term(expr, ind);
while (ind != expr.size() && (expr[ind] == '-' || expr[ind] == '+')) {
if (expr[ind] == '+')
res += get_term(expr, ++ind);
else
res -= get_term(expr, ++ind);
}
return res;
}
int main() {
string expr;
int ind = 0, res;
fin >> expr;
res = get_expression(expr, ind);
fout << res;
return 0;
}