Pagini recente » Cod sursa (job #2929067) | Cod sursa (job #987773) | Cod sursa (job #2352220) | Cod sursa (job #1343635) | Cod sursa (job #1639431)
#include <cstdio>
#include <cstring>
using namespace std;
int poz;
char v[100010];
int get_num()
{
int s=0;
for(;'0'<=v[poz] && v[poz]<='9';poz++) s=s*10+v[poz]-'0';
return s;
}
int solve()
{
int s=0,p=1;
while(v[poz]!=')')
{
if(v[poz]=='+')
{
s+=p;
p=1;
poz++;
}
else if(v[poz]=='-')
{
s+=p;
p=-1;
poz++;
}
else if(v[poz]=='*')
{
poz++;
if(v[poz]=='(') {poz++;p*=solve();}
else p*=get_num();
}
else if(v[poz]=='/')
{
poz++;
if(v[poz]=='(') {poz++;p/=solve();}
else p/=get_num();
}
else if(v[poz]=='(')
{
poz++;
p*=solve();
}
else p*=get_num();
}
s+=p;
poz++;
return s;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s",v);
int n=strlen(v);
v[n]=')';
printf("%d",solve());
return 0;
}