Code前端首页关于Code前端联系我们

使用C++实现计算器

terry 2年前 (2023-10-01) 阅读数 174 #c++
文章标签 MySQL Workbench

一、计算器实现的思路

在计算器的实现中,需要将用户输入的算式转换成计算机可以识别和处理的形式,然后进行计算并输出结果。

第一步是将用户输入的中缀表达式转换成后缀表达式,这样方便计算机进行计算。在转换中,需要注意运算符的优先级。

第二步是将转换后的后缀表达式利用栈进行计算,遇到操作数则压入栈中,遇到运算符则出栈两个操作数进行运算,并将运算结果压入栈中。

第三步是将栈中最后一个元素即为计算结果,将其输出给用户。

二、中缀转后缀的实现

中缀表达式转后缀表达式可以使用栈来实现,在将运算符压入栈中前需要弹出优先级比它高或相等的运算符。

vector infix2postfix(vector infix){
    stack s;
    vector postfix;
    map priority;
    priority["+"] = 1;
    priority["-"] = 1;
    priority["*"] = 2;
    priority["/"] = 2;
    priority["("] = 0;
    for(int i=0;i=priority[token]){
                postfix.push_back(s.top());
                s.pop();
            }
            s.push(token);
        }
    }
    while(!s.empty()){
        postfix.push_back(s.top());
        s.pop();
    }
    return postfix;
}

三、后缀表达式的计算实现

后缀表达式的计算可以使用栈来实现,在遇到操作数时将其压入栈中,在遇到运算符时弹出栈顶的两个元素进行计算,将结果再次压入栈中。

int eval_postfix(vector postfix){
    stack s;
    for(int i=0;i

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门