Pagini recente » Cod sursa (job #1431344) | Monitorul de evaluare | Cod sursa (job #1129119) | Cod sursa (job #2227514) | Cod sursa (job #185329)
Cod sursa(job #185329)
#include <stdio.h>
char s[100010];
long i;
long termen();
long factor();
long eval()
{
long r=termen();
while(s[i]=='+' || s[i]=='-')
{
if(s[i]=='+')
{
++i;
r+=termen();
}
else
{
++i;
r-=termen();
}
}
return r;
}
long termen()
{
long r=factor();
while(s[i]=='*' || s[i]=='/')
{
if(s[i]=='*')
{
++i;
r*=factor();
}
else
{
++i;
r/=factor();
}
}
return r;
}
long factor()
{
long r=0;
if(s[i]=='(')
{
++i;
r=eval();
++i;
}
else
while(s[i]<='9' && s[i]>='0')
{
r=r*10+s[i]-'0';
++i;
}
return r;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(s);
printf("%ld", eval());
return 0;
}