一个表达式计算器

本文介绍了作者在实现一个表达式计算器的过程中,涉及的类设计和函数设计。类设计包括unit类用于存储后缀表达式,calculator类用于计算。在函数设计部分,详细阐述了负数的预处理、中缀转后缀表达式的方法,以及计算后缀表达式的逻辑。文章提到了使用string、stack和queue的数据结构,并强调了数的处理和避免多余压栈的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近老师要求写一个表达式计算器,讲了算法,看上去容易,但是写起来还是有很多地方要注意呀。

-类设计

-unit类--用于存储后缀表达式

unit类我自己感觉设计得不好。设计这个类的主要目的是为了往后缀表达式中存储数据。
后缀表达式中既有数,也有符号,我想不出什么方法可以把这两种数据类型放在一起,于是设计了这个畸形的类……

    class unit {    
        bool is_number;//判断该unit是否是一个数  
        double true_number=0;//存储数  
        char true_operator='$';//存储符号。  
        int priority=5;//存储符号的优先级  
        int inv=5;//存储符号的目数  
    public:  
        unit(const double &true_number_fake);//作为数的构造函数
        unit(const char &true_operator_fake);//作为符号的构造函数
        ~unit() {};
        unit& operator=(const unit &A);
        char read_operator();//读取符号
        double read_number();//读取数
        int read_priority();//读取优先级
        int read_inv();//读取目数
        bool read_is();//判断是否是一个数
        int cal_priority();//计算优先级
        int cal_inv();//计算目数
        void show();//若为一个数,输出true_number,若为一个符号,输出true_operator
    };
-caculator类--用于计算

另外设计了一个caculator类用于计算。

class caculator {
    string Expression;//中缀表达式
    queue<unit> reverse_polish_notation;//后缀表达式
    stack<unit> operators;//运算符栈
public:
    caculator() {};
    ~caculator() {};
    void input_expression();//输入中缀表达式
    double cal_reverse_polish_notation();//计算后置表达式的值
    void switch_nega
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值