Pagini recente » Cod sursa (job #2511492) | Cod sursa (job #1082069) | Cod sursa (job #2445647) | Cod sursa (job #1037708) | Cod sursa (job #2369321)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f ("emm.in") ;
ofstream g ("emm.out") ;
char s[100010];
int p = 0, k ;
ll eval() ;
ll termen() ;
ll factor() ;
ll eval()
{
ll r = termen() ;
while (s[p] == '+' || s[p] == '-')
{
if (s[p] == '+')
{
p ++ ;
r += termen();
}
if (s[p] == '-')
{
p ++ ;
r += termen();
}
}
return r;
}
ll termen()
{
ll r = factor();
while (s[p] == '*' || s[p] == '/')
{
if (s[p] == '*')
{
p ++ ;
r *= factor() ;
}
if (s[p] == '/')
{
p ++ ;
r /= factor() ;
}
}
return r;
}
ll factor()
{
ll r = 0 ;
if (s[p] == '(')
{
p ++ ;
r = eval() ;
p ++ ;
}
else
{
while (isdigit(s[p]))
{
r = r * 10 + (s[p]-'0') ;
p ++ ;
}
}
return r;
}
int main()
{
f >> s;
p = 0 ;
k = strlen(s) ;
g << eval() ;
}