问题:计算机如何读懂四则运算表达式?
1.后缀表达式 (1)人类习惯的数学表达式叫做中缀表达式 (2)另外,还有一种将运算符放在数字后面的后缀表达式(消除了中缀表达式中的括号) (3)实例:
2.中缀or后缀 中缀表达式符合人类的阅读和思维习惯 后缀表达式符合计算机的运算方式 消除了中缀表达式中的括号 同时保留中缀表达式中的运算优先级
3.计算器核心算法 解决方案: (1)将中缀表达式进行数字和运算符的分离 (2)将中缀表达式转换为后缀表达式 (3)通过后缀表达式计算最终结果
4.分离算法分析 思想:以符号作为标志对表达式中的字符逐个访问 定义累计变量字符串num 当前字符exp[i]为数字或小数点时: 累计:num += exp[i]; 当前字符exp[i]为符号时: num为运算数,分离并保存 若exp[i]为正负号: 累计符号位+和-:num += exp[i] 若exp[i]为运算符: 分离并保存 如何区分正负号与加号和减号? +和-在表达式的第一个位置 括号后的+和- 运算符后的+和- +9 + (-3 - -1) * -5
小结: QString中的每个字符为QChar 四则运算表达式的计算分三个步骤: 数字和符号分离 中缀表达式转后缀表达式 根据后缀表达式计算结果
|