Cod sursa(job #274353)
#include<stdio.h>
#define nmax 100010
char v[nmax];
int evaluare();
int factor();
int get_nr();
int p;
int evaluare()
{
int rez=factor();
while(v[p]=='+' || v[p]=='-')
{
if(v[p]=='+' )p++,rez+=factor();
if( v[p]=='-')p++,rez-=factor();
}
return rez;
}
int factor()
{
int rez=get_nr();
while(v[p]=='*' || v[p]=='/')
{
if(v[p]=='*')p++,rez*=get_nr();
if(v[p]=='/')p++,rez/=get_nr();
}
return rez;
}
int get_nr()
{
int rez=0;
if(v[p]=='(')
{
p++;
rez+=evaluare();
p++;
return rez;
}
else
{
for(;'0'<=v[p] && v[p]<='9';p++)
rez=rez*10+(v[p]-'0');
return rez;
}
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",&v);
printf("%d\n",evaluare());
return 0;
}