Pagini recente » Cod sursa (job #2116396) | Cod sursa (job #2441839) | Cod sursa (job #1146379) | Cod sursa (job #2767804) | Cod sursa (job #2956509)
#include <stdio.h>
#include <stdint.h>
char st[100002];
char *__restrict s = st;
int64_t prod();
int64_t sum();
int64_t term() {
int64_t sgn = 1;
int64_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;
}
int64_t prod() {
int64_t t = term();
while (*s == '*' || *s == '/') {
if (*s == '*') {
++s;
t *= term();
} else {
++s;
t /= term();
}
}
return t;
}
int64_t sum() {
int64_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, "%li\n", sum());
fclose(out);
}
return 0;
}