Pagini recente » Cod sursa (job #2380874) | Cod sursa (job #2240990) | Cod sursa (job #190218) | Cod sursa (job #1936264) | Cod sursa (job #1780485)
#include<cstdio>
#include<cstring>
using namespace std;
char s[100010];
int poz;
int fnum()
{
int val=0;
while(s[poz]>='0'&&s[poz]<='9')
{
val*=10;
val+=s[poz]-'0';
poz++;
}
return val;
}
int solve()
{
int su=0,p=1;
while(s[poz]!=')')
{
if(s[poz]=='(')
{
poz++;
p*=solve();
}
else if(s[poz]=='*')
{
poz++;
}
else if(s[poz]=='/')
{
poz++;
if(s[poz]=='(')
{
poz++;
p/=solve();
}
else
{
p/=fnum();
}
}
else if(s[poz]>='0'&&s[poz]<='9')
{
p*=fnum();
}
else if(s[poz]=='+')
{
su+=p;
p=1;
poz++;
}
else
{
su+=p;
p=-1;
poz++;
}
}
su+=p;
poz++;
return su;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
s[strlen(s)]=')';
printf("%d",solve());
}