📄 cal.cpp
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -