Pagini recente » Cod sursa (job #1381322) | Cod sursa (job #1695450) | Cod sursa (job #882792) | Cod sursa (job #2322624) | Cod sursa (job #424384)
Cod sursa(job #424384)
#include<cstdio>
#include<cstring>
char s[101010];
long n;
long go(long &p);
long num(long &p)
{
long nr=0;
if(s[p]=='(')
{
p++;
long RR=go(p);
return RR;
}
while('0'<=s[p]&&s[p]<='9'&&p<n)
nr=nr*10+s[p]-'0',p++;
p--;
return nr;
}
long go(long &p)
{
long nr=0,S=0,pr=1,sm=1;
while(1)
{
while('0'<=s[p]&&s[p]<='9'&&p<n)
nr=nr*10+s[p]-'0',p++;
if(p==n||s[p]==')')
return pr*nr*sm+S;
else if(s[p]=='+')
S+=pr*nr*sm,sm=1,pr=1,nr=0;
else if(s[p]=='-')
S+=pr*nr*sm,sm=-1,pr=1,nr=0;
else if(s[p]=='*')
pr*=nr,nr=0;
else if(s[p]=='/')
p++,pr=pr*nr/num(p),nr=1;
else if(s[p]=='(')
p++,nr=go(p);
p++;
}
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
n=strlen(s);
long p=0;
printf("%ld",go(p));
return 0;
}