Pagini recente » Cod sursa (job #1989328) | Cod sursa (job #2062281) | Cod sursa (job #2906986) | Cod sursa (job #2735209) | Cod sursa (job #822202)
Cod sursa(job #822202)
#include <fstream>
using namespace std;
const int MAXN = 100009;
char s[MAXN];
int cursor;
int eval();
int eval2();
int eval3();
int eval3() {
int t(0);
if(s[cursor] == '(') {
++cursor;
t = eval();
++cursor;
}
else {
while(isdigit(s[cursor])) {
t = t * 10 + s[cursor] - '0';
++cursor;
}
}
return t;
}
int eval2() {
int t = eval3();
while(s[cursor] == '*' || s[cursor] == '/') {
if(s[cursor] == '*') {
++cursor;
t *= eval3();
}
else {
++cursor;
t /= eval3();
}
}
return t;
}
int eval() {
int t = eval2();
while(s[cursor] == '+' || s[cursor] == '-') {
if(s[cursor] == '+') {
++cursor;
t += eval2();
}
else {
++cursor;
t -= eval2();
}
}
return t;
}
int main () {
ifstream f("evaluare.in");
f >> s;
f.close();
ofstream g("evaluare.out");
g << eval() << endl;
g.close();
return 0;
}