Pagini recente » Cod sursa (job #2071682) | Cod sursa (job #567124) | Cod sursa (job #533396) | Cod sursa (job #2150585) | Cod sursa (job #1336308)
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int NMAX = 100000;
char c[NMAX+3];
int ind = 0;
int termen();
int eval( )
{
int r = termen();
while( c[ind] == '+' || c[ind] == '-' )
{
if( c[ind] == '+' )
{
++ind;
r += termen();
}
if( c[ind] == '-' )
{
++ind;
r -= termen();
}
}
return r;
}
int factor( )
{
int r = 0;
if( c[ind] == '(' )
{
++ind;
r = eval();
++ind;
}
else
{
while( c[ind] <='9' && c[ind] >='0' )
{
r = r*10 + c[ind]-'0';
++ind;
}
}
return r;
}
int termen( )
{
int r = factor();
while( c[ind] == '*' || c[ind] == '/' )
{
if( c[ind] == '*' )
{
++ind;
r *= factor();
}
if( c[ind] == '/' )
{
++ind;
r /= factor();
}
}
return r;
}
int main( )
{
in >> c;
out << eval() << '\n';
return 0;
}