Pagini recente » Cod sursa (job #2414873) | Cod sursa (job #2975046) | Cod sursa (job #2254176) | Cod sursa (job #914921) | Cod sursa (job #1849691)
#include <cstdio>
#define MAX_S 100000
using namespace std;
char S[MAX_S];
int readNumber(char* &p) {
int n = 0;
for (; *p >= '0' && *p <= '9'; ++p)
n = 10 * n + *p - '0';
return n;
}
int e1(char*&);
int e(char* &p) {
int res = e1(p);
while (*p != '\n' && *p != ')')
switch (*p) {
case '+': res += e1(++p); break;
case '-': res -= e1(++p); break;
}
if (*p == ')')
++p;
return res;
}
int e1(char* &p) {
int res;
if (*p == '(')
res = e(++p);
else
res = readNumber(p);
while (*p != '\n' && *p != '+' && *p != '-' && *p != ')')
switch (*p) {
case '*': res *= e1(++p); break;
case '/': res /= e1(++p); break;
}
return res;
}
int main() {
FILE *fin = fopen("evaluare.in", "r");
FILE *fout = fopen("evaluare.out", "w");
fgets(S, MAX_S, fin);
char *p = S;
fprintf(fout, "%d", e(p));
return 0;
}