Pagini recente » Istoria paginii runda/sim10_3/clasament | Cod sursa (job #1701856) | Cod sursa (job #600331) | Cod sursa (job #2481346) | Cod sursa (job #1007976)
#include <cstdio>
using namespace std;
char a[100004];
char *p;
int termen();
int factor();
int eval()
{
int ret=termen();
while(*p=='+'||*p=='-')
{
if(*p=='+')
{
p++;
ret+=termen();
}
else
{
p++;
ret-=termen();
}
}
return ret;
}
int termen()
{
int ret=factor();
while(*p=='*'||*p=='/')
{
if(*p=='*')
{
p++;
ret*=factor();
}
else
{
p++;
ret/=factor();
}
}
return ret;
}
int factor()
{
int ret=0;
if(*p=='(')
{
p++;
ret=eval();
p++;
}
else
{
while(*p>='0'&&*p<='9')
{
ret=ret*10+*p-'0';
p++;
}
}
return ret;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
fgets(a, 100004, stdin);
p=a;
printf("%d", eval());
}