Pagini recente » Cod sursa (job #131867) | Cod sursa (job #1319731) | Cod sursa (job #2455943) | Cod sursa (job #1398064) | Cod sursa (job #2790964)
#include <stdio.h>
#define MAX 100001
char s[MAX];
int ind;
int adunare();
int factor() {
int nr;
if (s[ind] == '(') {
ind++;
nr = adunare();
ind++;
} else {
nr = 0;
while (s[ind] >= '0' && s[ind] <= '9') {
nr = nr * 10 + (s[ind] - '0');
ind++;
}
}
return nr;
}
int inmultire() {
int rez;
rez = factor();
while ((s[ind] == '*') || (s[ind] == '/')) {
ind++;
if (s[ind] == '*') {
ind++;
rez *= factor();
} else {
rez /= factor();
}
}
return rez;
}
int adunare() {
int rez;
rez = inmultire();
while ((s[ind] == '+') || (s[ind] == '-')) {
ind++;
if (s[ind] == '+')
rez += inmultire();
else
rez -= inmultire();
}
return rez;
}
int main() {
FILE *fin, *fout;
fin = fopen("evaluare.in", "r");
fgets(s, MAX, fin);
fclose(fin);
ind = 0;
fout = fopen("evaluare.out", "w");
fprintf(fout, "%d", adunare());
fclose(fout);
return 0;
}