Pagini recente » Cod sursa (job #980467) | Cod sursa (job #646407) | Borderou de evaluare (job #1650462) | Cod sursa (job #167243) | Cod sursa (job #380687)
Cod sursa(job #380687)
#include <stdio.h>
#define Nmax 100002
char S[Nmax], *p;
int expresie();
int termen();
int factor();
int expresie() {
int r = termen();
while (*p == '+' || *p == '-') {
if (*p == '+') {
p++;
r += termen();
} else {
p++;
r -= termen();
}
}
return r;
}
int termen() {
int r = factor();
while (*p == '*' || *p == '/') {
if (*p == '*') {
p++;
r *= factor();
} else {
p++;
r /= factor();
}
}
return r;
}
int factor() {
int r = 0;
if (*p == '(') {
p++;
r = expresie();
p++;
}
else
while (*p >= '0' && *p <= '9') {
r = r * 10 + (*p - 48);
p++;
}
return r;
}
int main() {
FILE *f = fopen("evaluare.in", "r");
FILE *g = fopen("evaluare.out", "w");
fgets(S, Nmax, f);
p = S;
fprintf(g, "%d", expresie());
fclose(f); fclose(g);
return 0;
}