计算器核心解析算法(上)
计算机如何读懂四则运算表达式? 9.3 + (3 - -0.11) * 5 后缀表达式 人类习惯的数学表达式叫做中缀表达式 另外,还有一种将运算符放在数字后面的后缀表达式 5 + 3——> 5 3 + 1 + 2 * 3 ——> 1 2 3 * + 9 + (3 - 1) *5 ——> 9 3 1 - 5* + 中缀表达式符合 人类的阅读和思维习惯 后缀表达式符合 计算机的运算方式 ——消除了中缀表达式中的括号 ——同时保留中缀表达式中的运算优先级 解决方案 1.将中缀表达式进行 数字和运算符 的分离 2.将中缀表达式转换为后缀表达式 3.通过后缀表达式计算最终结果 分离算法分析 所要计算的中缀表达式中包含 ——数字和小数点[ 0-9或.] ——符号位[+ 或-] ——运算符[+ - * /] ——括号 [( 或 )] 9.3 + ( 3 - -0.11 ) * 5 思想:以符号作为标志对表达式中的字符逐个访问 ——定义累计变量num(字符串) —— 当前字符exp[i]为数字或小数点时: 累计:num += exp[i] —— 当前字符exp[i]为符号时: num为运算数,分离并保存 若exp[i]为正负号 : 累计符号位 +和- : num +=exp[i] 若exp[i]为运算符 : 分离并保存 for(int i