Pagini recente » Cod sursa (job #2452343) | Cod sursa (job #3132364) | Cod sursa (job #2930738) | Cod sursa (job #3195540) | Cod sursa (job #1814864)
#include<cstdio>
#include<cstring>
using namespace std;
char v[100001];
int c,n;
int eval();
int termen();
int factor();
int eval()
{int sum;
sum=termen();
while(c<n&&(v[c]=='+'||v[c]=='-'))
if(v[c]=='+')
{c++;
sum+=termen();
}
else
{c++;
sum-=termen();
}
return sum;
}
int termen()
{int prod;
prod=factor();
while(c<n&&(v[c]=='*'||v[c]=='/'))
if(v[c]=='*')
{c++;
prod*=factor();
}
else
{c++;
prod/=factor();
}
return prod;
}
int factor()
{int semn=1,val=0;
while(v[c]=='-')
{semn=-semn;
c++;
}
if(v[c]=='(')
{c++;
val=eval();
c++;
return val;
}
else
{while(c<n&&v[c]>='0'&&v[c]<='9')
{val=val*10+v[c]-'0';
c++;
}
return val;
}
}
int main ()
{freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
scanf("%s",&v);
n=strlen(v);
c=0;
printf("%d",eval());
return 0;
}