Pagini recente » Cod sursa (job #2129977) | Cod sursa (job #67927) | Cod sursa (job #1791993) | Cod sursa (job #2692888) | Cod sursa (job #2369011)
#include <bits/stdc++.h>
#define ll long long
#define NM 100005
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char s[NM], *p;
ll termen();
ll factor();
ll eval()
{
ll r = termen();
if(*p == '+')
{
++p;
r+=termen();
}
else if(*p == '-')
{
++p;
r-=termen();
}
return r;
}
ll termen()
{
ll r = factor();
if(*p == '*')
{
++p;
r*=factor();
}
else if(*p == '/')
{
++p;
r/=factor();
}
return r;
}
ll factor()
{
ll r = 0;
if(*p == '(')
{
++p;
r = eval();
++p;
}
else while(isdigit(*p))
{
r = r*10 + *p - '0';
++p;
}
return r;
}
int main()
{
fin.getline(s, NM);
p = s;
fout << eval();
return 0;
}