Polish calculation

来源:互联网 发布:python vs2010 编辑:程序博客网 时间:2024/06/06 02:52
//cww 逆波兰计算器#include<stack>#include<cstdio>#include<iostream>using namespace std;stack<double>s;char read(){    while (1){        printf("Select command and press<Enter>:");        char ch; cin>>ch;        if (ch=='?'||ch=='='||ch=='+'||            ch=='-'||ch=='*'||ch=='/'||            ch=='q'||ch=='Q')return ch;        puts("Please enter a valid command:");        puts("[?]push to stack [=]print top");        puts("[+] [-] [*] [/] you know them");        puts("[Q]uit =======Bazinga!=======");    }}bool solve(char ch){    double x,y;    if (ch=='q'||ch=='Q'){        puts("Calculation finshed.");        return 0;    }    if (ch=='?'){        printf("Enter a real number:");        cin>>x; s.push(x);    }    if (ch=='='){        if (s.empty())puts("Stack empty");        else printf("%.0lf\n",s.top());    }    if (ch=='+'||ch=='-'||ch=='*'||ch=='/'){        if (s.empty())puts("Stack empty");        else{            x=s.top(); s.pop();            if (s.empty()){                puts("Stack has just one entry");                s.push(x);            }            else{                y=s.top();s.pop();                switch (ch){                    case'+':s.push(x+y);break;                    case'-':s.push(x-y);break;                    case'*':s.push(x*y);break;                    case'/':s.push(x/y);break;                }            }        }    }    return 1;}//==========cww=2016,2,28=23:27=============== int main(){    puts("welcome");    while (!s.empty())s.pop();    while (solve(read())){}    return 0;}
0 0
原创粉丝点击