#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> Stack;
char num;
cout<<"****************************************"<<endl;
cout<<"这个最简单的计算器是采用后缀表达式进行计算的."<<endl;
cout<<"要计算5+6+7,那么输入5 6 7 + + = 即可."<<endl;
cout<<"要计算5+6*7,那么输入5 6 7 * + = 即可."<<endl;
cout<<"要计算5*6+7,那么输入5 6 * 7 + = 即可."<<endl;
cout<<"最后这个式子,(3+4)*(5-6/7)+8可以写成"
<<"3 4 + 5 6 7 / - * 8 +"<<endl;
cout<<"也就是说,采用后缀表达式,可以不用对+,-,*,/的优先级进行区分."<<endl;
cout<<"****************************************"<<endl;
cout<<"Enter expression:"<<endl;
cin>>num;
while(num!=61) //=的对应ASCII码,输入=时表达式结束
{
if(num!=43 && num!=45 && num!=42 && num!=47)//分别是+,-,*,/对应的ASCII码
Stack.push(num-48);//之所以减去48,因为0,1,……,9对应的ASCII码为48,49,……,57
else
{
char op1,op2;
op1=Stack.top(); //每当输入的是+,-,*,/时,弹出堆栈的两个数进行运算,然后将结果压栈
Stack.pop();
op2=Stack.top();
Stack.pop();
switch(num)
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载
- 1
- 2
- 3
前往页