Pagini recente » Cod sursa (job #903838) | Cod sursa (job #2731187) | Cod sursa (job #1063132) | Cod sursa (job #1521576) | Cod sursa (job #2203548)
#include <bits/stdc++.h>
#define N_MAX 100005
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char str[N_MAX];
int p;
long inmultire_impartire();
long paranteze();
long adunare_scadere()
{
long r=inmultire_impartire();
while(str[p]=='+' || str[p]=='-')
{
if(str[p]=='+')
{
++p;
r+=inmultire_impartire();
}
else if(str[p]=='-')
{
++p;
r-=inmultire_impartire();
}
}
return r;
}
long inmultire_impartire()
{
long r=paranteze();
while(str[p]=='*' || str[p]=='/')
{
if(str[p]=='*')
{
p++;
r*=paranteze();
}
else if(str[p]=='/')
{
p++;
r/=paranteze();
}
}
return r;
}
long paranteze()
{
long r=0;
if(str[p]=='(')
{
p++;
r=adunare_scadere();
p++;
}
else
{
while(isdigit(str[p]))
{
r=r*10+str[p]-'0';
p++;
}
}
return r;
}
int main()
{
in >> str;
out << adunare_scadere();
return 0;
}