Pagini recente » Cod sursa (job #912505) | Cod sursa (job #1088670) | Cod sursa (job #1707458) | Cod sursa (job #3001297) | Cod sursa (job #535351)
Cod sursa(job #535351)
#include<cstdio>
const int NMAX=100001;
char s[NMAX];
int poz;
int expresie();
int termen();
int factor();
void citire()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s);
}
void afisare()
{
printf("%d",expresie());
}
int expresie()
{
int sum=termen();
while (s[poz]=='+'||s[poz]=='-')
{
if (s[poz]=='+')
++poz,sum+=termen();
else
++poz,sum-=termen();
}
return sum;
}
int termen()
{
int p=factor();
while(s[poz]=='*'||s[poz]=='/')
{
if (s[poz]=='*')
++poz,p*=factor();
else
++poz,p/=factor();
}
return p;
}
int factor()
{
int val=0, semn=1;
if (s[poz]=='-')
semn=-1,++poz;
if (s[poz]=='(')
{
++poz;
val=expresie();
++poz;
return semn*val;
}
while (s[poz]>='0'&&s[poz]<='9')
val=val*10+(s[poz++]-'0');
return semn*val;
}
int main()
{
citire();
afisare();
return 0;
}