没有合适的资源?快使用搜索试试~ 我知道了~
这是一个简易的MFC计算器,可实现二进制,十六进制和十进制之间的转换,表达式的处理并没有用逆波兰数组
资源推荐
资源详情
资源评论
计算器的介绍
(1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示:
图 1.1 计算器界面
(2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以
通过键盘和单击按钮 2 种方式输入,输入后的结果如下图所示:
图 1.2 输入表达式后的界面
(3)在输入完表达式后,单击“=”后,开始对表达式进行计算,计算完成后,在编辑
框中显示计算的结果。
图 1.3 计算后的结果
(4)计算器可以实现十进制转化为十六进制或二进制,其实现的操作为先输入一个十
进制整数,再单击按钮“转化为二进制”或“转化为十六进制。
图 1.4 输入一个十进制数 100
图 1.5 100 转化为二进制后的结果
图 1.6 100 转化为十六进制后的结果
(4)另外,计算器还可以实现一些简单的函数运算,实现的操作和十六进制/二进制转
化类似,是先输入一个数字,在单击想要进行的函数的按钮,单击后就会在编辑框中显
示运算的结果。
1 算法的实现
2.1 把字符串转化为数字和运算符的算法
(1)如果字符串中只有数字。这个情况用来实现一些简单函数的运算。在进行简单函数
的运算时,都是先输入一个数字,再单击要进行运算的按钮,然后编辑框显示运算的结
果。
程序用了一个函数 double GetaStr(CString str)来实现这个功能,该函数以编辑框变量
m_strResult 为实参,再得到 m_strResult 的值后,调用 GetAt 函数,一个字符一个字符的
读取,如果碰到整数,执行“itemp=itemp*rate+(str.GetAt(i)-'0');”,其中变量 itemp 初始值为
0,变量 rate 初始值为 10,如果碰到了小数点,改变 rate 的值,使其等于 0.1,再向后继续
读取,再碰到整数时执行“itemp=itemp+rate*(str.GetAt(i)-'0');rate=rate/10;”,函数的最后确
定返回值为 itemp。以下是这个函数的代码
[2]
:
double CMyDlg::GetaStr(CString str)
{
int i=0;
double rate=10.0,itemp=0.0;
for(;i<str.GetLength();i++)
{
if(isdigit(str.GetAt(i))) //如果字符串 str.GetAt(i)的内容是整数
{
if(rate==10.0) //整数部分
itemp=itemp*rate+(str.GetAt(i)-'0');//获得整数
else //小数部分
{
itemp=itemp+rate*(str.GetAt(i)-'0');//获得小数
rate=rate/10; //每次让 rate 小 10 倍
}
}
else if(str.GetAt(i)=='.') //如果 str.GetAt(i)是小数点
rate=0.1; //让 rate=0.1,开始计算小数部分
}
return (itemp);
}
(2)如果字符串中有运算符和数字,但是没有括号。程序调用函数 void GetStr(CString
str),这个函数的前半部分和函数 void GetaStr(CString str)一样,都是获取数字的算法,但
剩余33页未读,继续阅读
资源评论
星夜流火
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功