Pagini recente » Cod sursa (job #1435957) | Cod sursa (job #1823939) | Cod sursa (job #1701439) | Cod sursa (job #667428) | Cod sursa (job #563489)
Cod sursa(job #563489)
#include<cstdio>
char sir[100001];
int poz=0;
int factor();
int termen();
int expresie();
int expresie()
{
int sum = termen();
while ( sir[poz]=='+' || sir[poz]=='-' )
{
if (sir[poz]=='+')
{
++poz;
sum += termen();
}
if (sir[poz]=='-')
{
++poz;
sum -= termen();
}
}
return sum;
}
int termen()
{
int prod = factor();
while ( sir[poz]=='*' || sir[poz]=='/' )
{
if (sir[poz]=='*')
{
++poz;
prod *= factor();
}
if (sir[poz]=='/')
{
++poz;
prod /= factor();
}
}
return prod;
}
int factor()
{
int val = 0 , semn = 1;
if (sir[poz]=='-')
{
++poz;
}
if (sir[poz]=='+') ++poz;
if (sir[poz]=='(')
{
++poz;
val = expresie();
++poz;
return val;
}
while (sir[poz]>='0' && sir[poz]<='9')
val = val*10 + sir[poz++] - '0';
return val;
}
int main()
{
freopen ( "evaluare.in" , "r" , stdin ) ;
freopen ( "evaluare.out" , "w" , stdout ) ;
scanf("%s",&sir);
printf ( "%d\n" , expresie() );
return 0;
}