Ejemplo n.º 1
0
TCHAR * EVAL::EvalExpression(TCHAR * pExpr, double * pValue, INT * pError)
{
	EVAL_EAT_WHITE( pExpr );
	pExpr = EvalTerm( pExpr, pValue, pError );
	if( * pError ) return pExpr;

	EVAL_EAT_WHITE( pExpr );
	TCHAR op = * pExpr;

	while( op == '+' || op == '-' ) {
		pExpr++; // skip operator
		double value;

		EVAL_EAT_WHITE( pExpr );
		pExpr = EvalTerm( pExpr, & value, pError );
		if( * pError ) return pExpr;

		if( op == '+' ) * pValue += value;
		if( op == '-' ) * pValue -= value;

		EVAL_EAT_WHITE( pExpr );
		op = * pExpr;
	}

	return pExpr;
}
Ejemplo n.º 2
0
int EvalExpresion(int num[BUF_MAX], char op[BUF_MAX][2])
{
	int buf[BUF_MAX] = { 0, };
	int idx = 0;
	int order = 1;
	int term = 0;

	while (op[idx][0])
	{
		if (op[idx][1] == order)
		{
			term = EvalTerm(num[idx], num[idx+1], op[idx][0]);
			EvalNumArrary(num, term, idx);
			EvalOpArrary(op, idx);
			order++;
			idx = 0;
			continue;
		}
		idx++;
	}
	return num[0];
}