Pagini recente » Cod sursa (job #323879) | Cod sursa (job #1874289) | Cod sursa (job #2155688) | Cod sursa (job #2452969) | Cod sursa (job #2790967)
#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 - 1] == '*')
rez *= factor();
else
rez /= factor();
}
return rez;
}
int adunare() {
int rez;
rez = inmultire();
while ((s[ind] == '+') || (s[ind] == '-')) {
ind++;
if (s[ind - 1] == '+')
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;
}