Pagini recente » Cod sursa (job #1976466) | Cod sursa (job #1004514) | Cod sursa (job #1225510) | Cod sursa (job #2670096) | Cod sursa (job #893366)
Cod sursa(job #893366)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char S[100001], *p = S;
int termen();
int factor();
int eval() {
int r = termen();
while (*p == '+' || *p == '-') {
switch (*p) {
case '+' :
++p;
r += termen();
break;
case '-' :
++p;
r -= termen();
break;
}
}
return r;
}
int termen() {
int r = factor();
while (*p == '/' || *p == '*') {
switch (*p) {
case '*':
++p;
r *= factor();
break;
case '/':
++p;
r /= factor();
break;
}
}
return r;
}
int factor() {
int r = 0;
if (*p == '(') {
++p;
r = eval();
++p;
}
else {
while (*p >= '0' && *p <= '9') {
r = r * 10 + *p - '0';
++p;
}
}
return r;
}
int main() {
in>>S;
long long K = eval();
out<<K;
return 0;
}