📄 计算器dlg.cpp
字号:
display=display+"+";
UpdateData(FALSE);
if(amount!=0)
stack2.push(amount);
stack1.get_top(symbol);
if(symbol=='#'||symbol=='(')
stack1.push('+');
else if(symbol=='+'||symbol=='-')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+')
operate=operate2+operate1;
else
operate=operate2-operate1;
stack2.push(operate);
stack1.pop();
stack1.push('+');
}
else{
while((symbol=='*')||(symbol=='/'))
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
stack1.pop();
stack1.get_top(symbol);
}
if(symbol=='+'||symbol=='-')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+')
operate=operate2+operate1;
else
operate=operate2-operate1;
stack2.push(operate);
stack1.pop();
}
stack1.push('+');
}
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtonminus()
{
// TODO: 在此添加控件通知处理程序代码
if(haveparent==true)
{
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_HIDE);
display='('+display+')';
haveparent=false;
}
display=display+"-";
UpdateData(FALSE);
if(amount!=0)
stack2.push(amount);
stack1.get_top(symbol);
if(symbol=='#'||symbol=='(')
stack1.push('-');
else if(symbol=='+'||symbol=='-')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+')
operate=operate2+operate1;
else
operate=operate2-operate1;
stack2.push(operate);
stack1.pop();
stack1.push('-');
}
else{
while((symbol=='*')||(symbol=='/'))
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
stack1.pop();
stack1.get_top(symbol);
}
if(symbol=='+'||symbol=='-')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+')
operate=operate2+operate1;
else
operate=operate2-operate1;
stack2.push(operate);
stack1.pop();
}
stack1.push('-');
}
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtonmul()
{
// TODO: 在此添加控件通知处理程序代码
if(haveparent==true)
{
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_HIDE);
display='('+display+')';
haveparent=false;
}
display=display+"*";
UpdateData(FALSE);
if(amount!=0)
stack2.push(amount);
stack1.get_top(symbol);
if(symbol=='*'||symbol=='/')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='*')
operate=operate2*operate1;
else
operate=operate2/operate1;
stack2.push(operate);
stack1.pop();
}
stack1.push('*');
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtondiv()
{
// TODO: 在此添加控件通知处理程序代码
if(haveparent==true)
{
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_HIDE);
display='('+display+')';
haveparent=false;
}
display=display+"/";
UpdateData(FALSE);
if(amount!=0)
stack2.push(amount);
stack1.get_top(symbol);
if(symbol=='*'||symbol=='/')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='*')
operate=operate2*operate1;
else
operate=operate2/operate1;
stack2.push(operate);
stack1.pop();
}
stack1.push('/');
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtonleft()
{
// TODO: 在此添加控件通知处理程序代码
display=display+"(";
UpdateData(FALSE);
stack1.push('(');
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtonright()
{
// TODO: 在此添加控件通知处理程序代码
display=display+")";
UpdateData(FALSE);
stack2.push(amount);
stack1.get_top(symbol);
stack1.pop();
while(symbol!='(')
{
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
else if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else operate=operate2/operate1;
stack2.push(operate);
stack1.get_top(symbol);
stack1.pop();
}
amount=0;
dot=0;
}
void CMyDlg::OnBnClickedButtonenter()
{
// TODO: 在此添加控件通知处理程序代码
if(symbol!='(')
stack2.push(amount);
do{
stack1.get_top(symbol);
stack1.pop();
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
}while(symbol!='#');
answer=operate;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
UpdateData(FALSE);
amount=operate;
stack1.push('#');
haveparent=true;
}
void CMyDlg::OnBnClickedButtonce()
{
// TODO: 在此添加控件通知处理程序代码
while(!stack1.empty())
stack1.pop();
while(!stack2.empty())
stack2.pop();
this->OnInitDialog();
}
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_hAccel!=NULL)
if(::TranslateAccelerator(m_hWnd,m_hAccel,pMsg))
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
void CMyDlg::OnBnClickedButtonex()
{
// TODO: 在此添加控件通知处理程序代码
if(stack2.empty()==true)
{
haveparent=true;
}
if(haveparent==true&&stack2.empty()==true)
{
answer=exp(amount);
display="exp"+display;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
else
{
if(symbol!='(')
stack2.push(amount);
do{
stack1.get_top(symbol);
stack1.pop();
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
}while(symbol!='#');
answer=exp(operate);
display="exp("+display+")";
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
UpdateData(FALSE);
}
void CMyDlg::OnBnClickedButtonsqrt()
{
// TODO: 在此添加控件通知处理程序代码
if(stack2.empty()==true)
haveparent=true;
if(haveparent==true&&stack2.empty()==true)
{
answer=sqrt(amount);
display="sqrt"+display;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
else
{
if(symbol!='(')
stack2.push(amount);
do{
stack1.get_top(symbol);
stack1.pop();
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
}while(symbol!='#');
answer=sqrt(operate);
display="sqrt("+display+")";
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
UpdateData(FALSE);
}
void CMyDlg::OnBnClickedButtonx2()
{
// TODO: 在此添加控件通知处理程序代码
if(stack2.empty()==true)
haveparent=true;
if(haveparent==true&&stack2.empty()==true)
{
answer=amount*amount;
display="square"+display;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
else
{
if(symbol!='(')
stack2.push(amount);
do{
stack1.get_top(symbol);
stack1.pop();
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
}while(symbol!='#');
answer=operate*operate;
display="square("+display+")";
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
UpdateData(FALSE);
}
void CMyDlg::OnBnClickedButtonn()
{
// TODO: 在此添加控件通知处理程序代码
answer=1;
if(stack2.empty()==true)
haveparent=true;
if(haveparent==true&&stack2.empty()==true)
{
for(int i=1;i<=amount;i++)
answer=i*answer;
display=display+"!";
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
else
{
if(symbol!='(')
stack2.push(amount);
do{
stack1.get_top(symbol);
stack1.pop();
stack2.get_top(operate1);
stack2.pop();
stack2.get_top(operate2);
stack2.pop();
if(symbol=='+') operate=operate2+operate1;
if(symbol=='-') operate=operate2-operate1;
else if(symbol=='*') operate=operate2*operate1;
else if(symbol=='/') operate=operate2/operate1;
stack2.push(operate);
}while(symbol!='#');
for(int i=1;i<=operate;i++)
answer=i*answer;
display="("+display+")!";
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
UpdateData(FALSE);
}
void CMyDlg::OnBnClickedButtonln()
{
// TODO: 在此添加控件通知处理程序代码
if(stack2.empty()==true)
haveparent=true;
if(haveparent==true&&stack2.empty()==true)
{
answer=log(amount);
display="ln"+display;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATICB)->ShowWindow(SW_SHOW);
amount=answer;
stack1.push('#');
haveparent=true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -