Pagini recente » Cod sursa (job #943361) | Cod sursa (job #209542) | Cod sursa (job #1508488) | Cod sursa (job #2674240) | Cod sursa (job #2956507)
#include <stdio.h>
#include <stdint.h>
char st[100001];
char *__restrict s = st;
int32_t prod();
int32_t sum();
int32_t term() {
int32_t sgn = 1;
int32_t t = 0;
while (*s == '-') {
++s;
sgn = -sgn;
}
if (*s == '(') {
++s;
t = sum();
++s;
return t * sgn;
}
while ('0' <= *s && *s <= '9') {
t *= 10;
t += *s - '0';
++s;
}
return t * sgn;
}
int32_t prod() {
int32_t t = term();
while (*s == '*' || *s == '/') {
if (*s == '*') {
++s;
t *= term();
} else {
++s;
t /= prod();
}
}
return t;
}
int32_t sum() {
int32_t t = prod();
while (*s == '+' || *s == '-') {
if (*s == '+') {
++s;
t += prod();
} else {
++s;
t -= prod();
}
}
return t;
}
void read_str(FILE *__restrict stream, char *__restrict str) {
while ((*str = fgetc(stream))) {
if (*str == '\r' || *str == '\n' || *str == '\0') {
*str = '\0';
return;
}
if (*str != ' ') {
++str;
}
}
}
int main(void) {
{
FILE *__restrict in = fopen("evaluare.in", "r");
read_str(in, st);
fclose(in);
}
{
FILE *__restrict out = fopen("evaluare.out", "w");
fprintf(out, "%i\n", sum());
fclose(out);
}
return 0;
}