?? test.cpp
字號:
// TEST.cpp : implementation file
#include "stdafx.h"
#include "T318.h"
#include "TEST.h"
#include "math.h"
#include "MyAbout.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// TEST dialog
TEST::TEST(CWnd* pParent /*=NULL*/)
: CDialog(TEST::IDD, pParent)
{
//{{AFX_DATA_INIT(TEST)
m_x = 0.0;
//}}AFX_DATA_INIT
m_ForS = 1; //初始化
m_ForF = 1;
m_wfun = true;
m_first = 0;
m_second = 0;
m_fun = 0;
m_mfun = 0;
m_firstz = 0;
m_firstx = 0;
m_firxw = 0;
m_secondz = 0;
m_secondx = 0;
m_secxw = 0;
m_firzorf = 1;
m_seczorf = 1;
m_firx = false;
m_secx = false;
}
void TEST::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(TEST)
DDX_Text(pDX, IDC_EDIT1, m_x);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(TEST, CDialog)
//{{AFX_MSG_MAP(TEST)
ON_BN_CLICKED(IDC_0, On0)
ON_BN_CLICKED(IDC_1, On1)
ON_BN_CLICKED(IDC_2, On2)
ON_BN_CLICKED(IDC_3, On3)
ON_BN_CLICKED(IDC_4, On4)
ON_BN_CLICKED(IDC_5, On5)
ON_BN_CLICKED(IDC_6, On6)
ON_BN_CLICKED(IDC_7, On7)
ON_BN_CLICKED(IDC_8, On8)
ON_BN_CLICKED(IDC_9, On9)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_SUB, OnSub)
ON_BN_CLICKED(IDC_TIM, OnTim)
ON_BN_CLICKED(IDC_DIV, OnDiv)
ON_BN_CLICKED(IDC_XSD, OnXsd)
ON_BN_CLICKED(IDC_ZFH, OnZfh)
ON_BN_CLICKED(IDC_QC, OnQc)
ON_BN_CLICKED(IDC_BA, OnBa)
ON_BN_CLICKED(IDC_RESULT, OnResult)
ON_BN_CLICKED(IDC_SIN, OnSin)
ON_BN_CLICKED(IDC_COS, OnCos)
ON_BN_CLICKED(IDC_PF, OnPf)
ON_BN_CLICKED(IDC_DS, OnDs)
ON_BN_CLICKED(IDC_SQR, OnSqr)
ON_BN_CLICKED(IDC_ABOUT, OnAbout)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// TEST message handlers
void TEST::On0()
{
// TODO: Add your control notification handler code here
AddNum(0);
}
void TEST::On1()
{
// TODO: Add your control notification handler code here
AddNum(1);
}
void TEST::On2()
{
// TODO: Add your control notification handler code here
AddNum(2);
}
void TEST::On3()
{
// TODO: Add your control notification handler code here
AddNum(3);
}
void TEST::On4()
{
// TODO: Add your control notification handler code here
AddNum(4);
}
void TEST::On5()
{
// TODO: Add your control notification handler code here
AddNum(5);
}
void TEST::On6()
{
// TODO: Add your control notification handler code here
AddNum(6);
}
void TEST::On7()
{
// TODO: Add your control notification handler code here
AddNum(7);
}
void TEST::On8()
{
// TODO: Add your control notification handler code here
AddNum(8);
}
void TEST::On9()
{
// TODO: Add your control notification handler code here
AddNum(9);
}
void TEST::OnAdd()
{
// TODO: Add your control notification handler code here
AddFun(1);
}
void TEST::OnSub()
{
// TODO: Add your control notification handler code here
AddFun(2);
}
void TEST::OnTim()
{
// TODO: Add your control notification handler code here
AddFun(3);
}
void TEST::OnDiv()
{
// TODO: Add your control notification handler code here
AddFun(4);
}
void TEST::OnXsd()
{
// TODO: Add your control notification handler code here
if(m_ForS ==1 && m_wfun)
m_firx = true; //在輸入第一個數時,將是否輸入小數置為真
if(m_ForS ==2 && m_wfun)
m_secx = true; //在輸入第二個數時,將是否輸入小數置為真
if(m_ForS ==3 && m_wfun)
m_firx = true; //在重新輸入第一個數時,將是否輸入小數置為真
}
void TEST::OnZfh()
{
// TODO: Add your control notification handler code here
if(m_ForS==1 && m_wfun) //此時在輸入第一個數
{
m_firzorf=-1; //指示符置為-1
m_first*=-1;
m_x=m_first;
UpdateData(false);
}
else if(m_ForS==2 && m_wfun) //此時在輸入第二個數
{
m_seczorf=-1; //指示符置為-1
m_second*=-1;
m_x=m_second;
UpdateData(false);
}
else if(m_ForS==3 && m_wfun) //此時在重新輸入第一個數
{
m_firzorf=-1; //指示符置為-1
m_first*=-1;
m_x=m_first;
UpdateData(false);
}
else if(!m_wfun)
{
m_seczorf=-1; //指示符置為-1
m_second*=-1;
m_x=m_second;
UpdateData(false);
}
}
void TEST::OnQc()
{
// TODO: Add your control notification handler code here
m_x = 0;
m_ForS = 1;
m_ForF = 1;
m_wfun = true;
m_first = 0;
m_second = 0;
m_fun = 0;
m_mfun = 0;
m_firstz = 0;
m_firstx = 0;
m_firxw = 0;
m_secondz = 0;
m_secondx = 0;
m_secxw = 0;
m_firzorf = 1;
m_seczorf = 1;
m_firx = false;
m_secx = false;
UpdateData(false);
}
void TEST::OnBa()
{
// TODO: Add your control notification handler code here
if(m_ForS == 1 && m_wfun)
{
if(m_firx == false)
{
if(m_firstz<10)
{
m_firstz = 0;
m_firzorf = 1;
}
else
{
m_firstz = m_firstz / 10;
}
}
else
{
if(m_firxw == 1) //如果小數位數等于一,則清除小數位并去掉小數點
{
m_firstx =0;
m_firxw--;
m_firx = false;
}
else
{
/* m_firstx = pow(10,(-1) * m_firxw-1) * (((int)(m_firstx* pow(10,m_firxw)))/10);
m_firxw--;*/
int y=(int)(m_firstx * pow(10,m_firxw)); //取一整數與小數點所有的數表示的整數相等,如123等于0.123的小數部分表示的數
y/=10;m_firxw--; //去掉最后一位
m_firstx=y * pow(10,(-1) * m_firxw);
}
}
m_first = m_firzorf * (m_firstz + m_firstx);
m_x = m_first;
}
else if(m_ForS == 2 && m_wfun)
{
if(m_secx == false)
{
if(m_secondz<10)
{
m_secondz = 0;
m_seczorf = 1;
}
else
{
m_secondz = m_secondz / 10;
}
}
if(m_secx == true)
{
if(m_secxw == 1) //如果小數位數等于一,則清除小數位并去掉小數點
{
m_secondx =0;
m_secxw--;
m_secx = false;
}
else
{
/* m_firstx = pow(10,(-1) * m_firxw-1) * (((int)(m_firstx* pow(10,m_firxw)))/10);
m_firxw--;*/
int y=(int)(m_secondx * pow(10,m_secxw)); //取一整數與小數點所有的數表示的整數相等,如123等于0.123的小數部分表示的數
y/=10;m_secxw--; //去掉最后一位
m_secondx=y * pow(10,(-1) * m_secxw);
}
}
m_second = m_seczorf *(m_secondz + m_secondx);
m_x = m_second;
}
else
{
m_x = 0;
m_ForS = 1;
m_ForF = 1;
m_wfun = true;
m_first = 0;
m_second = 0;
m_fun = 0;
m_mfun = 0;
m_firstz = 0;
m_firstx = 0;
m_firxw = 0;
m_secondz = 0;
m_secondx = 0;
m_secxw = 0;
m_firzorf = 1;
m_seczorf = 1;
m_firx = false;
m_secx = false;
}
UpdateData(false);
}
void TEST::OnResult()
{
// TODO: Add your control notification handler code here
if(m_ForF = 2 && m_wfun)
{
switch(m_mfun)
{
case 1: m_x = m_first + m_second;break; //作加法運算
case 2: m_x = m_first - m_second;break; //作減法運算
case 3: m_x = m_first * m_second;break; //作乘法運算
case 4:
if(m_second){m_x = m_first / m_second;break;}
else
{
AfxMessageBox("除數不能為0!");
return;
} //作除法運算
default: return;
}
m_first = m_x;
m_ForS = 3;
UpdateData(false);
}
}
void TEST::AddNum(int i)
{
if(m_ForS == 1)
{
if(m_firx == false) //輸入整數部分
{
m_firstz *= 10;m_firstz += i;
}
else //輸入小數部分
{
m_firxw++;m_firstx += pow(10,(-1) * m_firxw) *i;
}
m_first = m_firzorf * (m_firstz + m_firstx);
m_x = m_first;
m_wfun = true;
UpdateData(false);
}
if(m_ForS == 2)
{
if(m_secx == false) //輸入整數部分
{
m_secondz *= 10;m_secondz += i;
}
else //輸入小數部分
{
m_secxw++;m_secondx += pow(10,(-1) * m_secxw) * i;
}
m_second = m_seczorf * (m_secondz + m_secondx);
m_x = m_second;
m_wfun = true;
UpdateData(false);
}
if(m_ForS == 3)
{
m_firstz = 0;
m_firstx = 0;
m_first = 0;
m_firx = false;
m_firxw = 0;
m_firzorf = 1;
m_second = 0;
m_secondz = 0;
m_secondx = 0;
m_seczorf = 1;
m_secxw = 0; //運算后再輸入數字則清屏后輸入第一個數
m_ForF = 1;
m_mfun = 0;
m_wfun = true;
if(m_firx == false) //輸入整數部分
{
m_firstz *= 10;m_firstz += i;
}
else //輸入小數部分
{
m_firxw++;m_firstx += pow(10,(-1) * m_firxw) *i;
}
m_first = m_firzorf * (m_firstz + m_firstx);
m_x = m_first;
m_wfun = true;
m_ForS = 1;
UpdateData(false);
}
}
void TEST::AddFun(int j)
{
if(j == 1 ||j == 2 ||j == 3 ||j == 4)
{
if(m_ForS == 1||m_ForS == 2)
{
if(m_ForF == 1 && m_wfun)
{
m_mfun = j;
m_ForF = 2;
m_ForS = 2;
m_wfun = false;
}
else if(m_ForF == 2 && m_wfun)
{
switch(m_mfun)
{
case 1: m_x = m_first + m_second;break; //作加法運算
case 2: m_x = m_first - m_second;break; //作減法運算
case 3: m_x = m_first * m_second;break; //作乘法運算
case 4:
if(m_second){m_x = m_first / m_second;break;}
else
{
AfxMessageBox("除數不能為0!");
return;
} //作除法運算
default: return;
}
UpdateData(false);
m_first = m_x;
m_second = 0;
m_secondz = 0;
m_secondx = 0;
m_seczorf = 1;
m_secxw = 0;
m_mfun = j;
m_ForS = 2;
m_wfun = false;
}
else if(m_ForF == 2 && !m_wfun)
{
m_mfun = j;
m_ForF = 2;
m_ForS = 2;
m_wfun = false;
}
}
else if(m_ForS == 3)
{
m_second = 0;
m_secondz = 0;
m_secondx = 0;
m_seczorf = 1;
m_secxw = 0; //運算后再輸入數字則清屏后輸入第一個數
m_ForF = 1;
m_mfun = 0;
m_wfun = true;
if(m_ForF == 1 && m_wfun)
{
m_mfun = j;
m_ForF = 2;
m_ForS = 2;
m_wfun = false;
}
else if(m_ForF == 2 && m_wfun)
{
switch(m_mfun)
{
case 1: m_x = m_first + m_second;break; //作加法運算
case 2: m_x = m_first - m_second;break; //作減法運算
case 3: m_x = m_first * m_second;break; //作乘法運算
case 4:
if(m_second){m_x = m_first / m_second;break;}
else
{
AfxMessageBox("除數不能為0!");
return;
} //作除法運算
default: return;
}
UpdateData(false);
m_first = m_x;
m_second = 0;
m_secondz = 0;
m_secondx = 0;
m_seczorf = 1;
m_secxw = 0;
m_mfun = j;
m_ForS = 2;
m_wfun = false;
}
}
}
else
{
if((m_ForS == 1 && m_wfun) || m_ForS == 3)
{
switch(j)
{
case 5: m_first = sin(m_first/45 * atan(1)); break; //作正弦運算
case 6: m_first = cos(m_first/45 * atan(1)); break; //作余弦運算
case 7: m_first = m_first * m_first;break; //作平方運算
case 8:
if(m_first){m_first = 1/m_first;break;}
else
{
AfxMessageBox("0不能求倒數!");
return;
} //作倒數運算
case 9:
if(m_first>=0){m_first = sqrt(m_first);break;}
else
{
AfxMessageBox("負數不能開平方!");
return;
} //作開方運算
}
m_x = m_first;
m_ForF = 2;
m_ForS = 3;
UpdateData(false);
}
else if(m_ForS == 1 && !m_wfun)
{
switch(j)
{
case 5: m_first = sin(m_first/45 * atan(1)); break;
case 6: m_first = cos(m_first/45 * atan(1)); break;
case 7: m_first = pow(m_first,2); break;
case 8:
if(m_first){m_first = 1/m_first;break;}
else
{
AfxMessageBox("0不能求倒數!");
return;
} //作倒數運算
case 9:
if(m_first>=0){m_first = sqrt(m_first);break;}
else
{
AfxMessageBox("負數不能開平方!");
return;
} //作開方運算
}
m_x = m_first;
m_wfun = true;
m_ForF = 2;
m_ForS = 3;
UpdateData(false);
}
else if(m_ForS == 2 && m_wfun)
{
switch(j)
{
case 5: m_second = sin(m_second/45 * atan(1));break;
case 6: m_second = cos(m_second/45 * atan(1));break;
case 7: m_second = pow(m_second,2);break;
case 8:
if(m_second){m_second = 1/m_second;}
else
{
AfxMessageBox("0不能求倒數!");
return;
}break;
case 9:
if(m_second>=0){m_second = sqrt(m_second);}
else
{
AfxMessageBox("負數不能開平方!");
return;
}break;
}
m_x = m_second;
UpdateData(false);
}
else
{
AfxMessageBox("輸入不合法!");
}
}
}
void TEST::OnSin()
{
// TODO: Add your control notification handler code here
AddFun(5);
}
void TEST::OnCos()
{
// TODO: Add your control notification handler code here
AddFun(6);
}
void TEST::OnPf()
{
// TODO: Add your control notification handler code here
AddFun(7);
}
void TEST::OnDs()
{
// TODO: Add your control notification handler code here
AddFun(8);
}
void TEST::OnSqr()
{
// TODO: Add your control notification handler code here
AddFun(9);
}
void TEST::OnAbout()
{
// TODO: Add your control notification handler code here
MyAbout Dlg;
Dlg.DoModal();
}
void TEST::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -