expression.cpp

来自「穷举法进行三八二十四的计算。列举所有可能的表达式进行计算筛选。」· C++ 代码 · 共 63 行

CPP
63
字号
// Expression.cpp: implementation of the CExpression class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RepComb.h"
#include "Expression.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCalculator CExpression::m_Calculator;
CExpression::CExpression(char cOperator)
{
  m_bOperator=true;
  m_cOperator=cOperator;
  m_dblValue=0;
  m_strExpression.Format("%c",cOperator);
  m_strExpression.TrimLeft();
  m_strExpression.TrimRight();
}
CExpression::CExpression(double dblOperand)
{
 m_bOperator=false;
 m_cOperator='\0';
 m_dblValue=dblOperand;
 m_strExpression.Format("%.0f",dblOperand);
 m_strExpression.TrimLeft();
 m_strExpression.TrimRight();
}
CExpression::~CExpression()
{

}

double CExpression::Calculate(CExpression op, CExpression operand)
{
  if(m_bOperator!=false&&op.m_bOperator!=true&&
	  operand.m_bOperator!=false)
	  	  return 0;
  if(CExpression::m_Calculator.compareL(m_cOperator,op.m_cOperator)==1)
	  AddBracket();
  if(CExpression::m_Calculator.compareR(operand.m_cOperator,op.m_cOperator)==1)
	  operand.AddBracket();
  m_dblValue=m_Calculator.compute(m_dblValue,op.m_cOperator,
	  operand.m_dblValue);
  m_cOperator=op.m_cOperator;
  m_strExpression=m_strExpression+op.m_strExpression+
	  operand.m_strExpression;
  return m_dblValue;
}

void CExpression::AddBracket()
{
  m_strExpression="("+m_strExpression+")";
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?