Pagini recente » Cod sursa (job #2970360) | Cod sursa (job #2598759) | Cod sursa (job #263919) | Cod sursa (job #2695419) | Cod sursa (job #2098270)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char exp[100005];
char *p = exp;
int evaluate();
int factor();
int term();
int main() {
fin.getline(exp, 100000, '\n');
fin.close();
fout << evaluate();
fout.close();
return 0;
}
int evaluate() {
int sol = term();
while (*p == '+' || *p == '-') {
switch (*p) {
case '+':
++p;
sol += term();
break;
case '-':
++p;
sol -= term();
break;
default:
break;
}
}
return sol;
}
int term() {
int tmp = factor();
while (*p == '*' || *p == '/') {
switch (*p) {
case '*' :
++p;
tmp *= factor();
break;
case '/':
++p;
tmp /= factor();
break;
default:
break;
}
}
return tmp;
}
int factor() {
int tmp = 0;
if (*p == '(') {
++p;
tmp = evaluate();
++p;
} else {
while (*p >= '0' && *p <= '9') {
tmp = tmp * 10 + *p - '0';
++p;
}
}
return tmp;
}