Pagini recente » Cod sursa (job #31785) | Cod sursa (job #2439045) | Cod sursa (job #1373563) | Cod sursa (job #1192488) | Cod sursa (job #158360)
Cod sursa(job #158360)
#include <stdio.h>
#include <string.h>
char x[100010],s[100010];
long eval2();
long nr();
long eval()
{
long a=eval2();
while (s[0]=='+'||s[0]=='-')
{
if (s[0]=='+')
{
strcpy(s,s+1);
a+=eval2();
}
else {
strcpy(s,s+1);
a-=eval2();
}
}
return a;
}
long eval2()
{
long a=nr();
while (s[0]=='*'||s[0]=='/')
{
if (s[0]=='*')
{
strcpy(s,s+1);
a*=nr();
}
else {
strcpy(s,s+1);
a/=nr();
}
}
return a;
}
long nr()
{
long a=0;
if (s[0]=='(')
{
strcpy(s,s+1);
a=eval();
strcpy(s,s+1);
}
else
while (s[0]>='0'&&s[0]<='9')
{
a=a*10+s[0]-'0';
strcpy(s,s+1);
}
return a;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(x);
strcpy(s,x);
printf("%ld\n",eval());
return 0;
}