[C++]利用逆波兰式,简单实现下加减乘除的混合运算

Posted HiveDark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++]利用逆波兰式,简单实现下加减乘除的混合运算相关的知识,希望对你有一定的参考价值。

测试代码

此处显示之前逆波兰式求法后的增量代码!
http://blog.csdn.net/u010989191/article/details/53135563

//简单加减乘除法运算  因为数据是放在堆栈中 所以前一个操作数是opB 后一个操作数是opA
int simpleCalculate(int opA, int opB, char op) 
    switch (op)
    
    case '+':
        return opB + opA;
    case '-':
        return opB - opA;
    case '*':
        return opB * opA;
    case '/':
        return opB / opA;
    default:
        return 0;
    


//计算表达式的值
int calculate(string polish) 
    stack<int> values;
    bool lastIsNum = false;
    for (int i = 0; i < polish.length(); i++) 
        char c = polish.at(i);
        if (c == ' ') 
            lastIsNum = false;
            continue;
        
        else if (c >= '0'&&c <= '9') 
            if (lastIsNum) 
                int last = values.top();
                values.pop();
                last = last * 10 + (c - '0');
                values.push(last);
            
            else 
                values.push(c - '0');
                lastIsNum = true;
            
        
        else 
            lastIsNum = false;
            int opA = values.top();
            values.pop();
            int opB = values.top();
            values.pop();
            int calResult = simpleCalculate(opA, opB, c);
            values.push(calResult);
        
    
    return values.top();


int main()

    string str;
    cout << "请输入表达式: ";
    cin >> str;
    string result = reversePolish(str);
    cout << result << endl;
    int calResult = calculate(result);
    cout << "计算结果: " << calResult << endl;
    system("pause");
    return 0;

测试结果

以上是关于[C++]利用逆波兰式,简单实现下加减乘除的混合运算的主要内容,如果未能解决你的问题,请参考以下文章

逆波兰式实现四则运算(加减乘除)

现代软件工程课程作业 第一章第1题

使用逆波兰式进行表达式求值

基于MFC的含四则混合运算的计算器

关于逆波兰式的c++实现

C++栈的应用:逆波兰式的实现