Pagini recente » Cod sursa (job #2646560) | Cod sursa (job #212724) | Cod sursa (job #1568697) | Cod sursa (job #1358521) | Cod sursa (job #1278179)
#include <cstdio>
#define LMAX 100003
using namespace std;
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
char x[LMAX];
int i;
int eval();
int termen();
int factor();
int eval(){
int r = termen();
while(x[i] == '+' || x[i] == '-'){
if(x[i] == '+'){
++i;
r += termen();
}
if(x[i] == '-'){
++i;
r -= termen();
}
}
return r;
}
int termen(){
int r = factor();
while(x[i] == '*' || x[i] == '/'){
if(x[i] == '*'){
++i;
r *= factor();
}
if(x[i] == '/'){
++i;
r /= factor();
}
}
return r;
}
int factor(){
int r = 0;
if(x[i] == '('){
++i;
r = eval();
++i;
}else{
while(x[i] <='9' && x[i] >='0'){
r = r*10 + x[i]-'0';
++i;
}
}
return r;
}
int main()
{
gets(x);
printf("%d\n",eval());
return 0;
}