Pagini recente » Cod sursa (job #543783) | Cod sursa (job #3186787) | Cod sursa (job #3125560) | Cod sursa (job #1636382) | Cod sursa (job #342736)
Cod sursa(job #342736)
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
const long MAX = 100001;
char S[MAX],*p = S;
long termen();long factor();
long eval() {
long r = termen();
while (*p == '+' || *p == '-') {
if (*p == '+') {
++p;
r += termen();
} else
if (*p == '-') {
++p;
r -= termen();
}
}
return r;
}
long termen() {
long r = factor();
while (*p == '*' || *p == '/') {
if (*p == '*') {
++p;
r *= factor();
} else
if (*p == '/') {
++p;
r /= factor();
}
}
return r;
}
long factor() {
long r = 0;
if (*p == '(') {
++p;
r = eval();
++p;
} else {
while (*p >= '0' && *p<='9') {
r *= 10;
r += *p - '0';
++p;
}
}
return r;
}
int main() {
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(S,MAX,stdin);
long r = eval();
printf("%ld\n",r);
fclose(stdin);
fclose(stdout);
return 0;
}