Pagini recente » Cod sursa (job #1501960) | Cod sursa (job #1794479) | Cod sursa (job #2060263) | Cod sursa (job #2494718) | Cod sursa (job #1208799)
#include <cstdio>
#include <cstring>
#define Nmax 100005
using namespace std;
int p=1,N;
char a[Nmax];
int expr();
inline int nr()
{
int sol=0;
if(p>N) return 0;
for(;a[p]>='0' && a[p]<='9' && p<=N;sol=sol*10+a[p]-'0',++p);
return sol;
}
inline int fact()
{
if(p>N) return 0;
if(a[p]>='0' && a[p]<='9')
return nr();
else
{
++p;
int aux=expr();
++p;
return aux;
}
}
inline int term()
{
if(p>N) return 0;
int sol=fact();
while(p<N && (a[p]=='*' || a[p]=='/'))
{
++p;
if(a[p-1]=='*')
sol*=fact();
else
sol/=fact();
}
return sol;
}
inline int expr()
{
if(p>N) return 0;
int sol=term();
while(p<N && (a[p]=='+' || a[p]=='-'))
{
++p;
if(a[p-1]=='+')
sol+=term();
else
sol-=term();
}
return sol;
}
int main()
{
freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
scanf("%s", (a+1));
N=strlen(a+1);
printf("%d\n", expr());
return 0;
}