Pagini recente » Cod sursa (job #995272) | Cod sursa (job #1816286) | Cod sursa (job #2983041) | Cod sursa (job #2239192) | Cod sursa (job #1573439)
// Acest cod va este oferit de:
// BITUL LIBER
// bitul-liber.ro
#include <stdio.h>
#include <ctype.h>
char s[100002];
int pos = 0;
int E();
int T();
int F();
int E() {
int val = T();
while (s[pos] == '+' || s[pos] == '-') {
if (s[pos] == '+') {
pos++;
val += T();
}
else {
pos++;
val -= T();
}
}
return val;
}
int T() {
int val = F();
while (s[pos] == '*' || s[pos] == '/') {
if (s[pos] == '*') {
pos++;
val *= F();
}
else {
pos++;
val /= F();
}
}
return val;
}
int F() {
int val = 0;
if (s[pos] == '-') {
pos++;
val = -F();
}
else if (s[pos] == '(') {
pos++;
val = E();
pos++;
}
else if (isdigit(s[pos])) {
while (isdigit(s[pos])) {
val = val * 10 + s[pos] - '0';
pos++;
}
}
return val;
}
int main()
{
FILE *in;
FILE *out;
in = fopen("evaluare.in", "r");
fgets(s, sizeof(s), in);
out = fopen("evaluare.out", "w");
fprintf(out, "%d\n", E());
fclose(in);
fclose(out);
return 0;
}