一个简单的计算器程序,有点问题

djh512 2009-09-26 09:40:39
class CCalculatorDlg : public CDialog
{
// Construction
public:
CCalculatorDlg(CWnd* pParent = NULL); // standard constructor
void OnEnternum();
void OnComputer();
float computer(float num,operation oper);
private:
BOOL m_bnext; //用来记录数据后是否为运算符
int m_ncomflag; //记录输入运算符次数
float m_numold; //记录上次运算结果
operation m_oper; //记录上次运算符号

};

//m_nnum 编辑框 输出结果用

void CCalculatorDlg::OnEnternum()
{
// TODO: Add your control notification handler code here
CString strnum,strold;

this->GetDlgItemText(IDC_EDITDIS,strold);
this->GetFocus()->GetWindowText(strnum);
m_nnum=atoi((char *)&strnum);

if(m_bnext)
{
this->SetDlgItemText(IDC_EDITDIS,strold);
m_bnext=FALSE;
}

else
{
if(strold=="0")
this->SetDlgItemText(IDC_EDITDIS,strold);
else
this->SetDlgItemText(IDC_EDITDIS,strold+strnum);
}

UpdateData(TRUE);
TRACE("%d",m_nnum);





}

void CCalculatorDlg::OnComputer()
{
// TODO: Add your control notification handler code here
CString stroper;
m_ncomflag++;
m_bnext=TRUE;
if(m_ncomflag>1)
{
m_numold=computer(m_numold,m_oper);
this->GetFocus()->GetWindowText(stroper);
if(stroper=="+") m_oper=add;
if(stroper=="-") m_oper=plus;
if(stroper=="*") m_oper=multiply;
if(stroper=="/") m_oper=devide;
}
else
{
this->GetFocus()->GetWindowText(stroper);
if(stroper=="+") m_oper=add;
if(stroper=="-") m_oper=plus;
if(stroper=="*") m_oper=multiply;
if(stroper=="/") m_oper=devide;
m_numold=m_nnum;
}

m_nnum=m_numold;
UpdateData(FALSE);


}

float CCalculatorDlg::computer(float num,operation m_oper)
{
float result;
switch(m_oper)
{
case add:
result=num+m_nnum;
break;
case plus:
result=num-m_nnum;
break;
case multiply:
result=num-m_nnum;
case devide:
if(m_nnum==0)
{
AfxMessageBox("除数为0,出错!");
result=0;
exit;
}
else
result=num/m_nnum;
break;
}

return result;
}

void CCalculatorDlg::OnEquall()
{
// TODO: Add your control notification handler code here
m_ncomflag=0;
if(!m_bnext)
{
m_numold=computer(m_numold,m_oper);
m_nnum=m_numold;
UpdateData(FALSE);
}

}

void CCalculatorDlg::OnButtoncls()
{
// TODO: Add your control notification handler code here
this->SetDlgItemText(IDC_EDITDIS,"0");
m_numold=0;


}

OnEnternum();函数响应所有单击从 0到9这9个按钮的单击事件
OnComputer(); 响应单击 “+” “-”“*”“/”按钮
OnEquall() 是=
OnButtoncls() 是清零


这个我做一个简单的比如说 3+2 结果都出不来,程序是看书上的,自己看了半天不知道问题在哪 请指教


...全文
148 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dushuchen 2009-09-27
  • 打赏
  • 举报
回复
代码那么长

懒的看
flyinghawl 2009-09-27
  • 打赏
  • 举报
回复
路过拿分....
tongxinxu520 2009-09-27
  • 打赏
  • 举报
回复
自己慢慢调试啊
djh512 2009-09-27
  • 打赏
  • 举报
回复
这个应该不算长吧 我主要是不会调试 ~
希望有个人指教一下
qq539929779 2009-09-27
  • 打赏
  • 举报
回复
呵呵
不动如岳 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovesnsfi 的回复:]
这代码也长,我晕····
[/Quote]呵呵
开宝马拖西瓜 2009-09-27
  • 打赏
  • 举报
回复
这代码也长,我晕····
Noak_ark 2009-09-26
  • 打赏
  • 举报
回复
路过拿10分
djh512 2009-09-26
  • 打赏
  • 举报
回复
178069778 这个程序不大 我是才鸟 。
希望有高手指教一下
用户 昵称 2009-09-26
  • 打赏
  • 举报
回复
如果你把现成的工程也传到网上,别人帮你调试会更方便。
微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧