Pagini recente » Cod sursa (job #2727194) | Borderou de evaluare (job #2015874) | Cod sursa (job #1649960) | Cod sursa (job #3245276) | Cod sursa (job #759120)
Cod sursa(job #759120)
#include <cstdio>
#define MAX 100001
char c[MAX],*g;
int eval();
int termen();
int factor();
int factor(){
int r = 0;
if(*g=='(')
{
g++; //trecem peste (
r = eval();
g++; // trecem peste )
} else
{
while('0'<=*g && *g<='9')
{
r = r*10 + *g - '0';
g++; // trecem peste cifra
}
}
return r;
}
int termen(){
int r = factor();
while(*g=='*'||*g=='/')
{
if(*g=='*')
{
g++; // trecem peste *
r *= factor();
} else
{
g++; // trecem peste /
r /= factor();
}
}
return r;
}
int eval(){
int r = termen();
while(*g=='+'||*g=='-')
{
if(*g=='+')
{
g++; //trecem peste +
r += termen();
} else
{
g++; //trecem peste -
r -= termen();
}
}
return r;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",c);
g=c;
printf("%d\n",eval());
}