Pagini recente » Cod sursa (job #1134008) | Cod sursa (job #48892) | Cod sursa (job #2562960) | Cod sursa (job #2032314) | Cod sursa (job #1639667)
#include <cstdio>
#include <cstring>
int l,i;
char s[100005];
int eval();
int termen();
int factor();
int nr();
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",&s);
l=strlen(s);
i=0;
printf("%d\n",eval());
return 0;
}
int eval()
{
int a=termen();
while (s[i]=='+' or s[i]=='-')
{
if (s[i]=='+') i++,a+=termen();
else i++,a-=termen();
}
return a;
}
int termen()
{
int a=factor();
while (s[i]=='*' or s[i]=='/')
{
if (s[i]=='*') i++,a*=factor();
else i++,a/=factor();
}
return a;
}
int factor()
{
int r=0;
if (s[i]=='(')
{
i++;
r=eval();
i++;
}
else r=nr();
return r;
}
int nr()
{
int a=0;
while (s[i]>='0' && s[i]<='9')
{
a=a*10+s[i]-'0';
i++;
}
return a;
}