【过程记录】
实验截图:

【结果分析】
1.实验中我以课本中计算器的实验为例,实现并验证了顺序栈各种基本运算。
2.计算器的实现:当用户输入“ ”时,程序将将即将输入的数压入栈中;当用户输入“+”“-”“*”“/”等基本运算符,弹出之前被压入的数字做相应的运算,并将结果压入栈中。当用户输入“=”时,弹出并显示上一步运算的结果。
3.依照书中的基本思想,我实现了计算器的运算,并做了一些相应的改变:
(1)将计算器作为一个类实现,从而将计算器中用以储存数据的栈作为私有数据成员,用以实现各种操作的函数作为保护成员函数更好的封装起来,对用户只留有命令接口。这样简化了主函数,也方便以后的使用。
(2)由于计算器中运算数据存储在有一定限制的栈中,多次元素按之后可能会使栈状态变为full,所以我增加了名为clear()的函数可以清空栈。
4.实验中我遇到的问题:
(1)要注意栈“先进后出”的特点,所以容易弄错运算数的顺序(加法、乘法并没有影响,但减法和除法运算就可能出现问题),即栈中第一次弹出的数据是第二个操作数,第二次弹出的数据是第一个操作数。
(2)编写计算器的构造函数时,发现数据成员command(char类型)并不能默认为‘’,但可以是空格‘ ’,之前并没有注意到这种区别。
(3)验证时,我发现当输入“ ”之后,如果我输入的不是默认要输入的double类型,例如输入“a”等字母,程序没有报错,反而是出现死循环,对于这个问题我并没有解决。