Pagini recente » Cod sursa (job #914453) | Cod sursa (job #68373) | Cod sursa (job #2766457) | Cod sursa (job #3272551) | Cod sursa (job #535352)
Cod sursa(job #535352)
#include<cstdio>
const int N=100005;
char s[N];
int poz;
int expresie();
int factor();
int termen();
void citire()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s);
}
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;
if (s[poz]=='(')
{
++poz;
val=expresie();
++poz;
return val;
}
while (s[poz]>='0' && s[poz]<='9')
val=val*10+(s[poz++]-'0');
return val;
}
int expresie()
{
int sum=termen();
while (s[poz]=='+' || s[poz]=='-')
if (s[poz++]=='+')
sum+=termen();
else
sum-=termen();
return sum;
}
void afis()
{
printf("%d\n",expresie());
}
int main()
{
citire();
afis();
return 0;
}