Pagini recente » Cod sursa (job #2339931) | Cod sursa (job #534069) | Cod sursa (job #3130469) | Cod sursa (job #1504609) | Cod sursa (job #150114)
Cod sursa(job #150114)
#include <iostream>
#include <fstream>
using namespace std;
char exp[100001];
int pos(0);
int getNumber() {
int n(0);
while (isdigit(exp[pos])) {
n = n*10 + exp[pos] - '0';
++pos;
}
return n;
}
int getExpression();
int getFactor() {
int a;
if (exp[pos] == '(') {
++pos;
a = getExpression();
++pos;
} else
a = getNumber();
return a;
}
int getTerm() {
int a = getFactor();
while ((exp[pos] == '*') || (exp[pos] == '/')) {
++pos;
if (exp[pos - 1] == '*')
a *= getFactor();
else
a /= getFactor();
}
return a;
}
int getExpression() {
int a = getTerm();
while ((exp[pos] == '+') || (exp[pos] == '-')) {
++pos;
if (exp[pos - 1] == '+')
a += getTerm();
else
a -= getTerm();
}
return a;
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("evaluare.in", "r");
fscanf(fi, "%s", exp);
fclose(fi);
FILE *fo = fopen("evaluare.out", "w");
fprintf(fo, "%d\n", getExpression());
fclose(fo);
return 0;
}