Pagini recente » Cod sursa (job #1692694) | Cod sursa (job #1016317) | Cod sursa (job #2869502) | Cod sursa (job #802158) | Cod sursa (job #2279812)
#include <bits/stdc++.h>
#define ll long long
#define LMAX 100010
using namespace std;
//Evaluare de expresii fara paranteze
ll n ;
char s[LMAX] , *p;
ll eval();
ll termen();
ll factor();
ll eval()
{
ll r = termen();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
p ++ ;
r += termen();}
if (*p == '-')
{
p ++ ;
r -= termen();
}
}
return r ;
}
ll termen()
{
ll r = factor() ;
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
p ++ ;
r *= factor();
}
if (*p == '/')
{
p ++ ;
r /= factor() ;
}
}
return r;
}
ll factor()
{
ll r = 0 ;
if (*p == '(')
{
p ++ ;
r = eval();
p ++ ;
}
while (isdigit(*p))
{
r = r * 10 + (*p - '0');
p ++ ;
}
return r;
}
int main()
{
freopen("evaluare.in" , "r" , stdin);
freopen("evaluare.out" , "w" , stdout) ;
scanf("%s" , &s);
p = s ;
printf("%lld" , eval()) ;
return 0 ;
}