计算机软件基础实习(一)

简单计算器


实验内容:
(1) 学习图形界面的设计,利用 MFC 应用程序(Java swing 或 QT 框架,或 C#)创
建基于对话框的应用程序,添加按钮、编辑框等控件;
(2) 能通过设计的按钮控件输入并实现简单算术运算,要求表达式在编辑框中显示,
能将运算结果,输出在编辑框内显示;并保存历史的表达式运算记录。
(3) 也能够实现混合运算的算术表达式求解,算术表达式中包括加、减、乘、除、
括号等运算符;并且能够识别括号,优先级正确。
 

实验目标:

  1、能通过设计的按钮控件输入并实现简单算术运算,要求表达式在编辑框中显示,能将运算结 果,输出在编辑框内显示

  2、能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算符;并且能够识别括号,优先级正确。

 3、能够保存历史的表达式运算记录以及三角函数的运算、对数运算、指数运算、进制转换等科学计数。

编程语言和开发环境

本次开发采用C++与QT结合的形式

实验原理


1.后缀表达式计算法
        前缀表达式
即是所有运算符在操作数前面。

        中缀表达式
中缀表达式就是常见的运算表达式

中缀表达式对人来说是最熟悉的,但是对应计算机来说,是比较难算的,因为要比较运算符的优先级,所以一般将中缀表达式转化为后缀表达式。

        后缀表达式
运算符在操作数后面

中缀表达式转换为后缀表达式


从左向右依次读取算术表达式的元素X,分以下情况进行不同的处理:

(1)如果X是操作数,直接入队

(2)如果X是运算符,再分以下情况: 

(a)如果栈为空,直接入栈。 

(b)如果X==”(“,直接入栈。 

(c)如果X==”)“,则将栈里的元素逐个出栈,并入队到后缀表达式队列中,直到第一个配对的”(”出栈。(注:“(”和“)”都不 入队)       

(d)如果是其他操作符(+ - * /),则和栈顶元素进行比较优先级。 如果栈顶元素的优先级大于等于X,则出栈并把栈中弹出的元素入队,直到栈顶元素的优先级小于X或者栈为空。弹出完这些元素后,才将遇到的操作符压入到栈中。

(3)最后将栈中剩余的操作符全部入队。

后缀表达式的计算

 首先准备一个栈Res_Stack.

1、从左开始向右遍历后缀表达式的元素。

2、如果取到的元素是操作数,直接入栈Res_Stack,如果是运算符,从栈中弹出2个数进行运算,然后把运算结果入栈

3、当遍历完后缀表达式时,计算结果就保存在栈里了。

流程图

参考资料

【CSDN】栈的三种表达式(前缀、中缀、后缀)(12条消息) 计算机软件技术实习项目一(一) 简易计算器项目准备_杰克·奈皮尔的博客-CSDN博客

开发心得:
此次简单计算机的开发是基于visual c++6.0的MFC实现。由于是第一次使用MFC,在熟练度上较为欠缺。在功能上目前仅实现简单的四则运算以及结果的显示,因为开发进度较慢,后续的多项式及符号优先级还未完全设置。当然,就目前开发而言,还是收获了许多,例如MFC的图形设计以及对一些控件的使用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值