cal.cpp

来自「这是一个计算器小程序,实现加减乘除功能,适合初学者参考及学习!」· C++ 代码 · 共 150 行

CPP
150
字号
// Cal.cpp: implementation of the CCal class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Calculator.h"
#include "Cal.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCal::CCal()
{
	m_A=0;
	m_State=0;
}

CCal::~CCal()
{

}

CString CCal::Input(char c)
{   CString str;
	switch (m_State)
	{
	case 0:
		if (c>='0' && c<='9'){
		    m_A = c - '0';
			str.Format("%f",m_A);
			m_State=1;
			return str;
		}
		if (c=='+'||c=='-'||c=='*'||c=='/'){
			m_Op=c;
			str.Format("%f",m_A);
			m_State=2;
			return str;
		}
		if (c=='C'){
		    m_A=0;
			m_State=0;
			str.Format("%f",m_A);
			return str;
		}
		if (c=='='){
			m_State=0;
			str.Format("%f",m_A);
			return str;	
		}

	case 1:
		if (c>='0' && c<='9'){
		    m_A = m_A*10 + c - '0';
			str.Format("%f",m_A);
			m_State=1;
			return str;
		}
		if (c=='+'||c=='-'||c=='*'||c=='/'){
			m_Op=c;
			str.Format("%f",m_A);
			m_State=2;
			return str;
		}
		if (c=='C'){
		    m_A=0;
			m_State=0;
			str.Format("%f",m_A);
			return str;
		}
		if (c=='='){
			m_State=0;
			str.Format("%f",m_A);
			return str;	
		}

	case 2:
		if (c>='0' && c<='9'){
		    m_B = c - '0';
			str.Format("%f",m_B);
			m_State=3;
			return str;
		}
		if (c=='+'||c=='-'||c=='*'||c=='/'){
			m_Op=c;
			str.Format("%f",m_B);
			m_State=2;
			return str;
		}
		if (c=='C'){
		    m_A=0;
			m_State=0;
			str.Format("%f",m_A);
			return str;
		}
		if (c=='='){
			m_State=0;
			str.Format("%f",m_A);
			return str;	
		}

	case 3:
		if (c>='0' && c<='9'){
		    m_B = m_B *10 + c - '0';
			str.Format("%f",m_B);
			m_State=3;
			return str;
		}
		if (c=='+'||c=='-'||c=='*'||c=='/'){
			m_A=Oper(m_A,m_B,m_Op);
			m_Op=c;
			str.Format("%f",m_A);
			m_State=2;
			return str;
		}
		if (c=='C'){
		    m_A=0;
			m_State=0;
			str.Format("%f",m_A);
			return str;
		}
		if (c=='='){
			m_A=Oper(m_A,m_B,m_Op);
			m_Op=c;
			str.Format("%f",m_A);
			m_State=0;
			return str;
		}
	}
}

double CCal::Oper(double a, double b, char op)
{
	switch (op){
	case '+': return a+b;
	case '-': return a-b;
	case '*': return a*b;
	case '/': if (b==0) return 0;
				else return a/b;
	
	}
}

⌨️ 快捷键说明

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