Pagini recente » Cod sursa (job #576710) | Cod sursa (job #601175) | Cod sursa (job #2842954) | Cod sursa (job #1057778) | Cod sursa (job #1849943)
#include <cstdio>
#define MAX_S 100000
using namespace std;
char L[MAX_S];
int readNumber(char* &p) {
int n = 0;
for (; *p >= '0' && *p <= '9'; ++p)
n = 10 * n + *p - '0';
return n;
}
int prod(char*&);
int sum(char* &p) {
int res = prod(p);
while (*p == '+' || *p == '-')
switch (*p) {
case '+': res += prod(++p); break;
case '-': res -= prod(++p); break;
}
++p;
return res;
}
int prod(char* &p) {
int res;
if (*p == '(')
res = sum(++p);
else
res = readNumber(p);
while (*p == '*' || *p == '/')
switch (*p) {
case '*': res *= prod(++p); break;
case '/': res /= prod(++p); break;
}
return res;
}
int main() {
FILE *fin = fopen("evaluare.in", "r");
FILE *fout = fopen("evaluare.out", "w");
fgets(L, MAX_S, fin);
char *p = L;
fprintf(fout, "%d", sum(p));
return 0;
}