问题描述
- vc6.0实现计算器的编写,在线等,谢谢
- 我想问一下怎么实现科学计算。就比如说1+2*3?先计算乘除法
以下是我的部分程序,谢谢大家
加减乘除里的代码是一样的。
void?CMyDlg::Onadd()?
{
//?TODO:?Add?your?control?notification?handler?code?here??? char?cs[30];?
double?add;??
m_Edit.GetWindowText(cs30);?
add=atof((LPCTSTR)cs);??//将字符型换成浮点型switch(control)????????????//每次计算之前前进行之前的运算
{??
case?0:???result=add;break;?????????????//第一个数应存储
case?1:???result=result+add;break;?
case?2:???result=result-add;break;?
case?3:???result=result*add;break;?
case?4:?
{??
if(add==0)?
{???
MessageBox(""除数不能为0!请重新输入"");?
char?ed[50];??
_gcvt(result50ed);??
m_Edit.SetWindowText(ed);
Num='?';??
control=0;??????????????????//control赋初值
return;?
}?
else???
{
result=result/add;
break;
}?
}?
}??
control=1;?
char?ed[50];??
_gcvt(result50ed);??
m_Edit.SetWindowText(ed);? m_Edit.SetWindowText(""+"");
Num='?';??
UpdateData(FALSE);?
}
这里是等于号里边的代码void?CMyDlg::Ondeng()?
{
//?TODO:?Add?your?control?notification?handler?code?here
char?cs[30]seq[50];?
double?equal;?
switch(control)?
{??
case?1:?
{??
m_Edit.GetWindowText(cs30);?
equal=atof((LPCTSTR)cs);?
result=result+equal;?
_gcvt(result6seq);??
m_Edit.SetWindowText(seq);?Num='?';?
result=0;?
control=0;?
break;?
}?
case?2:?
{??
m_Edit.GetWindowText(cs30);?
equal=atof((LPCTSTR)cs);?
result=result-equal;?
_gcvt(result6seq);??
m_Edit.SetWindowText(seq);?
Num='?';?
result=0;?
control=0;?
break;?
}?
case?3:?
{??
m_Edit.GetWindowText(cs30);?
equal=atof((LPCTSTR)cs);?
result=result*equal;?
_gcvt(result6seq);??
m_Edit.SetWindowText(seq);?
Num='?';?
result=0;?
control=0;?
break;?
}?
case?4:?
{??
m_Edit.GetWindowText(cs30);?
equal=atof((LPCTSTR)cs);?
if(equal==0)?
{??
MessageBox(""除数不能为0!请重新输入"");?
char?ed[50];??
_gcvt(result6ed);??
m_Edit.SetWindowText(ed);?
???????????
Num='?';??
control=0;??????????????????//control回到初值
return;?
}?
else?
{??
result=result/equal;?
_gcvt(result6seq);??m_Edit.SetWindowText(seq);?
Num='?';?
result=0;?
control=0;?
break;??
}???
}???
}?
}
解决方案
解决方案二:
http://download.csdn.net/download/iduzy/3406067