Pagini recente » Cod sursa (job #1753941) | Cod sursa (job #942924) | Cod sursa (job #9998) | Cod sursa (job #1662824) | Cod sursa (job #1976942)
/*
Keep It Simple!
*/
#include <fstream>
#include <cstring>
using namespace std;
const int MAX_N = 100001;
const int LMAX = 2;
char op[4][4] = {"+-", "*/", "^", ""};
char expr[MAX_N], *p = expr;
int N;
int oper(int x, int y, int c) {
switch(c) {
case '+' : return x+y;
case '-' : return x-y;
case '*' : return x*y;
case '/' : return x/y;
}
}
int eval(int depth) {
int r, y;
if (depth == LMAX) {
if (*p == '(') {
++p; r = eval(0); ++p;
} else {
for (r = 0; *p >= '0' && *p <= '9'; ++p)
r = r * 10 + *p - '0';
}
} else {
for (r = eval(depth + 1); strchr(op[depth], *p) && strlen(p); r = y)
y = oper(r, eval(depth+1), *p++);
}
return r;
}
void Solve() {
ifstream f("evaluare.in");
f >> expr;
N = strlen(expr);
ofstream g("evaluare.out");
g << eval(0);
}
int main()
{
Solve();
return 0;
}