Pagini recente » Cod sursa (job #524973) | Cod sursa (job #1236583) | Cod sursa (job #347961) | Cod sursa (job #929101) | Cod sursa (job #525488)
Cod sursa(job #525488)
#include <stdio.h>
using namespace std;
char S[100010],*p=S;
long eval();
long termen();
long factor();
long eval()
{
long x=termen();
while(*p=='+'||*p=='-')
{
if(*p=='+')
{
p++;
x+=termen();
}
else if(*p=='-')
{
p++;
x-=termen();
}
}
return x;
}
long termen()
{
long x=factor();
while(*p=='*'||*p=='/')
{
if(*p=='*')
{
p++;
x*=factor();
}
else if(*p=='/')
{
p++;
x/=factor();
}
}
return x;
}
long factor()
{
long x=0;
if(*p=='(')
{
p++;
x=eval();
p++;
}
else
{
while(*p>='0'&&*p<='9')
{
x=x*10+(int)*p-(int)'0';
p++;
}
}
return x;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(S);
printf("%ld\n",eval());
return 0;
}