if(str0.GetAt(i)=='(')
str2.Format("%lf",a[0]);//将str2替换为括号中运算结果的字符串
m_strResult=str1+str2+str3;
}
voidCQCalculatorDlg:
:
GetResult(void)//得到结果
{
inti=0,x=0,y=1,t=0,z=1;
//把乘法全部转换为除法
for(i=0;i<=s;i++)
{
if(b[i]=='/')
{
a[i+1]=1/a[i+1];
b[i]='*';
}
}
//计算乘法
for(i=0;i
{
if(b[i]=='*')
{
if(i-t==2)
{
a[t-z]=a[t-z]*a[i+1];
z+=2;
}
else
a[i-1]=a[i-1]*a[i+1];
b[i]='';
a[i+1]=1000000.0;
t=i;
}
}
//整理数组
for(i=0;i
{
if(a[i]!
=1000000.0)
{
a[x]=a[i];
x=x+2;
}
if(b[i]!
='')
{
b[y]=b[i];
y+=2;
}
}
//计算只有加减运算的表达式
for(i=0;i<=y-2;i++)
{
if(b[i]=='+')
{
a[0]=a[0]+a[i+1];
}
if(b[i]=='-')
{
a[0]=a[0]-a[i+1];
}
}
}
voidCQCalculatorDlg:
:
hex(intn)
{
CStringstr;
intx;
if(n/16!
=0)
hex(n/16);
x=n%16;
if(x>=0&&x<=9)
{
str.Format("%d",x);
str_hex+=str;
}
else
str_hex+=(char)(x+55);
}
voidCQCalculatorDlg:
:
OnBnClickedNum0()//"0"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="0";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="0";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum1()//"1"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="1";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="1";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum2()//"2"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="2";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="2";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum3()//"3"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="3";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="3";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum4()//"4"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="4";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="4";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum5()//"5"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="5";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="5";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum6()//"6"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="6";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="6";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum7()//"7"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="7";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="7";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum8()//"8"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="8";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="8";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedNum9()//"9"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="9";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="9";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedBackspace()//"退格"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_strResult!
="0"&&m_strResult.GetLength()>1)
{
m_strResult=m_strResult.Left(m_strResult.GetLength()-1);//目前显示非零并且长度大于
}
else
{
Restarted=true;
m_strResult="0";
}
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedsin()//"sin"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleresult;
result=sin(GetNumStr(m_strResult)*m_PI/180);
m_strResult.Format("%lf",result);
OperatorPressed=true;
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedCos()//"cos"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleresult;
result=cos(GetNumStr(m_strResult)*m_PI/180);
m_strResult.Format("%lf",result);
OperatorPressed=true;
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedTan()//"tan"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleresult;
result=tan(GetNumStr(m_strResult)*m_PI/180);
m_strResult.Format("%lf",result);
OperatorPressed=true;
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedSqrt()//"√"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleresult;
result=sqrt(GetNumStr(m_strResult));
m_strResult.Format("%lf",result);
OperatorPressed=true;
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedIn()//"In"
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleresult;
result=log(GetNumStr(m_strResult));
m_strResult.Format("%lf",result);
OperatorPressed=true;
UpdateData(FALSE);
}
voidCQCalculatorDlg:
:
OnBnClickedEqual()//"="
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
//计算结果
Bracket(m_strResult);
GetStr(m_strResult);
GetResult();
//显示数据
m_strResult.Format("%1f",a[0]);
UpdateData(FALSE);
OperatorPressed=true;
}
voidCQCalculatorDlg:
:
OnBnClickedDot()//"."
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult=".";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+=".";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=false;//此时不处于清零状态
UpdateData(FALSE);//将控件变量的值传给显示框
}
voidCQCalculatorDlg:
:
OnBnClickedLbracket()//"("
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);//将对话框中的值传给控件变量
if(OperatorPressed==true||Restarted==true)
m_strResult="(";//如果之前是求结果或者清零操作,则直接显示输入数字
else
m_strResult+="(";//之前处于输入状态,则继续追加
OperatorPressed=false;//此时不再处于输出运算结果状态
Restarted=