Pagini recente » Cod sursa (job #3291602) | Cod sursa (job #90493) | Borderou de evaluare (job #2005877) | Cod sursa (job #2678608) | Cod sursa (job #895523)
Cod sursa(job #895523)
#include <cstdio>
using namespace std;
char s[100001];
char *p=s;
int fact();
int term();
int eval()
{
int r=fact();
while(*p=='+'||*p=='-')
{
switch(*p)
{
case '+':
*p++;
r+=fact();
break;
case '-':
*p++;
r-=fact();
break;
}
}
return r;
}
int fact()
{
int r=term();
while(*p=='*'||*p=='/')
{
switch(*p)
{
case '*':
*p++;
r*=term();
break;
case '/':
*p++;
r/=term();
break;
}
}
return r;
}
int term()
{
int r=0;
if(*p=='(')
{
*p++;
r=eval();
*p++;
}
else
{
while(*p>='0'&&*p<='9')
r=r*10+(*p++-'0');
}
return r;
}
int main()
{
freopen("evaluare.in","r",stdin);
scanf("%s",&s);
freopen("evaluare.out","w",stdout);
printf("%d\n",eval());
return 0;
}