首页 > 编程语言 > 详细

012_计算器核心解析算法(上)

时间:2020-06-30 17:22:39      阅读:85      评论:0      收藏:0      [点我收藏+]

一、 问题一

问:计算机如何读懂四则运算表达式?
"9.3 + ( 3 - -0.11 ) * 5"
答:括号打乱了计算的次序,所以要进行括号的转换,让括号消失。

二、 后缀表达式

1. 人类习惯的数学表达式叫做中缀表达式(将运算符放在中间)
2. 将运算符放在数字后面就叫做后缀表达式

技术分享图片

三、 中缀 or 后缀

1. 中缀表达式符合人类的阅读和思维习惯
2. 后缀表达式符合计算机的运算方式(消除了中缀表达式的括号,同时保留了中缀表达式中的运算优先级)

四、 计算机核心算法

1. 将中缀表达式进行数字和运算符的分离(分离后要么是数字,要么是运算符,要么是括号)
2. 将中缀表达式转换为后缀表达式(去除括号,且不改变运算的优先级)
3. 通过后缀表达式计算最终结果(逐个运算后压栈)

五、 分离算法分析

技术分享图片
难点:辨别正负号和加减号

1. 思想:以符号(加减乘除和括号)作为标志对表达式中的字符逐个访问

技术分享图片
所以若为正负号就应该将它累计下来作为下一个操作数的符号位

2. 伪代码

技术分享图片

3. 如何区分正负号与加减号?

技术分享图片

六、 编程实验(表达式分离算法)

QCalculatordec.cpp文件

1. 前期函数准备

技术分享图片

2. 分离函数

技术分享图片

3. 测试函数(在构造函数中测试)

技术分享图片
技术分享图片

4. 输出结果(要么是合法的数字,要么是符号)

技术分享图片

七、 小结

  • QString 中的每个字符为 QChar(unicode)
  • 四则运算表达式的计算分三个步骤

    a. 数字和符号的分离
    b. 中缀表达式转后缀表达式
    c. 通过后缀表达式计算出结果

 

012_计算器核心解析算法(上)

原文:https://www.cnblogs.com/luosir520/p/13214837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!