c++ 实现四则运算

描述:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

输出:计算结果,保留两位小数。

 

程序任务分为两部分:

一。将输入的中缀表达式转换为后缀表达式,实现过程:

  1.准备队列保存后缀表达式(计算后缀表达式时,需要从队首读取数据)

    准备栈保存计算符,使用找调整计算顺序    

  2.读输入字符串,如果是数字,直接入后缀表达式队列;

    如果是计算符号,当计算符号栈为空或当前符号优先级大于栈顶符号优先级,直接入栈。否则依次弹出栈顶符号入后缀表达式队列,直到遇到优先级不小于当前的符号或栈空。

    如果是(直接入栈,如果是)弹出符号栈中符号入后缀表达式队列,直到((不入队)

  3.反复2过程直到读完所有字符串,若符号栈不为空,弹出其中所有元素入队

二。计算后缀表达式:

  计算栈

  1.弹出队列元素,如果是数字,直接入栈,如果是操作符号,弹出栈顶两个数字计算。

P.S.第一个弹出数字是第二个数字,第二个弹出数字是第一个数字。

    |temp1|   栈顶    temp2 - temp1  注意这一点,容易在减和除运算中出错

    |--------|

    |temp2|

    |--------|

 

posted @ 2019-09-07 23:35  水中飞云  阅读(2409)  评论(0编辑  收藏  举报