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; }
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]; }