Pagini recente » Cod sursa (job #3212025) | Cod sursa (job #2212319) | Cod sursa (job #1222030) | Istoria paginii runda/test12242435 | Cod sursa (job #892568)
Cod sursa(job #892568)
#include<stdio.h>
char e[100001];
int i;
using namespace std;
long factor(void);
long termen(void);
long expresie(void);
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(e,10001,stdin);
printf("%ld\n",expresie());
}
long factor()
{
long f=0;
if(e[i]>='0'&&e[i]<='9')
{
while(e[i]>='0'&&e[i]<='9')
f=f*10+e[i++]-'0';
}
else
if(e[i]=='(')
{
i++;
f=expresie();
i++;
}
return f;
}
long termen(void)
{
long t=factor();
while(e[i]=='*'||e[i]=='/')
{
if(e[i]=='*')
{
i++;
t*=factor();
}
else
{
i++;
t/=factor();
}
}
return t;
}
long expresie(void)
{
long r=termen();
while(e[i]=='+'||e[i]=='-')
{
if(e[i]=='+')
{
i++;
r+=termen();
}
else
{
i++;
r-=termen();
}
}
return r;
}