Pagini recente » Cod sursa (job #1825775) | Cod sursa (job #2779830) | Cod sursa (job #68681) | Cod sursa (job #1418361) | Cod sursa (job #1877605)
#include <cstdio>
using namespace std;
char curchar;
void readnextchar() {
curchar = getc(stdin);
}
int suma(int s = 0, char op = '+');
int prod(int p = 1, char op = '*');
int fact();
int intreg(int nr = 0);
int suma(int s, char op) {
int produs = prod();
int rez;
if(op == '+') {
rez = s + produs;
} else {
rez = s - produs;
}
if(curchar == '+' || curchar == '-') {
op = curchar;
readnextchar();
rez = suma(rez, op);
}
return rez;
}
int prod(int p, char op) {
int factor = fact();
int rez;
if(op == '*') {
rez = p * factor;
} else {
rez = p / factor;
}
if(curchar == '*' || curchar == '/') {
op = curchar;
readnextchar();
rez = prod(rez, op);
}
return rez;
}
int fact() {
int factor;
if(curchar == '(') {
readnextchar();
factor = suma();
readnextchar();
} else {
factor = intreg();
}
return factor;
}
int intreg(int nr) {
if(curchar >= '0' && curchar <= '9') {
nr = nr * 10 + (curchar - '0');
readnextchar();
return intreg(nr);
}
return nr;
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
readnextchar();
printf("%d", suma());
return 0;
}