Pagini recente » Cod sursa (job #2271417) | Cod sursa (job #3224594) | Cod sursa (job #984454) | Cod sursa (job #2803273) | Cod sursa (job #2787770)
#include <stdio.h>
#define MAX_S 100000
char s[MAX_S];
int sIndex;
int adunare(); // Declaram semnatura functiei adunare, ca sa "stie" functia factor de existenta ei
int factor() {
int number;
if (s[sIndex] == '(') {
++sIndex;
number = adunare();
++sIndex;
} else {
number = 0;
while (s[sIndex] >= '0' && s[sIndex] <= '9') {
number = number * 10 + s[sIndex] - '0';
++sIndex;
}
}
return number;
}
int inmultire() {
int result;
result = factor();
while (s[sIndex] == '*' || s[sIndex] == '/')
if (s[sIndex++] == '*')
result *= factor();
else
result /= factor();
return result;
}
int adunare() {
int result;
result = inmultire();
while (s[sIndex] == '+' || s[sIndex] == '-')
if (s[sIndex++] == '+')
result += inmultire();
else
result -= inmultire();
return result;
}
int main() {
FILE *fin, *fout;
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fgets(s, MAX_S, fin);
sIndex = 0;
fprintf(fout, "%d\n", adunare());
fclose(fin);
fclose(fout);
return 0;
}