Pagini recente » Cod sursa (job #3237396) | Cod sursa (job #1697948) | Cod sursa (job #2726845) | Cod sursa (job #122890) | Cod sursa (job #1098068)
#include <fstream>
#include <string>
using namespace std;
ifstream is("evaluare.in");
ofstream os("evaluare.out");
long Termen();
long Factor();
long Eval();
string s;
int it;
int main()
{
is >> s;
os << Eval();
return 0;
}
long Eval()
{
long r = Termen();
while ( s[it] == '+' || s[it] == '-' )
{
if ( s[it] == '+' )
{
++it;
r += Termen();
}
else
{
++it;
r -= Termen();
}
}
return r;
}
long Termen()
{
long r = Factor();
while ( s[it] == '*' || s[it] == '/')
{
if (s[it] == '*')
{
++it;
r *= Factor();
}
if ( s[it] == '/')
{
++it;
r /= Factor();
}
}
return r;
}
long Factor()
{
long r = 0;
if ( s[it] == '(' )
{
++it;
r = Eval();
++it;
}
else
{
while ( s[it] >= '0' && s[it] <= '9' )
{
r = r * 10 + s[it] - '0';
++it;
}
}
return r;
}