Pagini recente » Cod sursa (job #2002130) | Cod sursa (job #666540) | Cod sursa (job #752169) | dsfdsf | Cod sursa (job #2332684)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int MAX = 100010;
char exp[MAX],*p = exp;
long eval();
long termen();
long factor();
int main()
{
fin>>exp;
fout<<eval();
return 0;
}
long eval()
{
long result = termen();
while( *p == '+' or *p == '-' )
{
if( *p == '+' )
*p++,
result += termen();
else
*p++,
result -= termen();
}
return result;
}
long termen()
{
long result = factor();
while( *p == '*' or *p == '/' )
{
if( *p == '*' )
*p++,
result *= factor();
else
*p++,
result /= factor();
}
return result;
}
long factor()
{
long result = 0;
if( *p == '(' )
{
*p++;
result = eval();
*p++;
}else{
while( *p >= '0' and *p <= '9' )
{
result = result *10 + (*p - '0');
*p++;
}
}
return result;
}