Pagini recente » Cod sursa (job #2971990) | Cod sursa (job #535374) | Cod sursa (job #1958436) | Cod sursa (job #661255) | Cod sursa (job #1989754)
#include <cstdio>
FILE *fin;
char first;
int expr();
int fact() {
int val = 0;
if ('0' <= first && first <= '9') {
while ('0' <= first && first <= '9') {
val = 10 * val + first - '0';
first = fgetc(fin);
}
} else if (first == '+' || first == '-') {
if (first == '+') {
first = fgetc(fin);
val = fact();
} else {
first = fgetc(fin);
val = -fact();
}
} else if (first == '(') {
first = fgetc(fin);
val = expr();
first = fgetc(fin);
}
return val;
}
int term() {
int val = fact();
if (first == '*' || first == '/') {
if (first == '*') {
first = fgetc(fin);
val *= fact();
} else {
first = fgetc(fin);
val /= fact();
}
}
return val;
}
int expr() {
int val = term();
while (first == '+' || first == '-') {
if (first == '+') {
first = fgetc(fin);
val += term();
} else {
first = fgetc(fin);
val -= term();
}
}
return val;
}
int main() {
fin = fopen("evaluare.in", "r");
first = fgetc(fin);
FILE *fout = fopen("evaluare.out", "w");
fprintf(fout, "%d\n", expr());
fclose(fin);
fclose(fout);
return 0;
}