# cpp_calculator **Repository Path**: NaN01/cpp_calculator ## Basic Information - **Project Name**: cpp_calculator - **Description**: 一个calculator类,支持输入中缀式并计算结果 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/NaN01 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-27 - **Last Updated**: 2022-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cpp_calculator ## calculator类 ```cpp calculator::calculator(int size_t); //构造函数,size_t是中缀式的长度,大于需计算的式子即可 calculator::calculator(const char *infix_); //构造函数,在创建时将计算式作为参数传入 calculator::~calculator(); //析构函数 void calculator::split(const char *which, bool print); //根据which将中缀式或后缀式分离成数字和运算符两部分,并存储,print控制是否打印出分离结果,默认为false.有可能抛出const char*类错误 void calculator::infix_to_postfix(bool print); //根据分离后的数字和运算符将中缀式转换为后缀式(逆波兰式),并存储,print控制是否打印出结果,默认为false double calculator::calculate_on_postfix(bool print); //根据后缀式计算结果,print控制是否打印出结果,默认为false double calculator::get_result(void); //根据中缀式计算结果,会调用上述几个函数.有可能抛出const char*类错误 double calculator::calculate(const char *infix_); //返回infix_的计算结果.有可能抛出const char*类错误 friend istream &operator>>(istream &is, calculator &cal); //从cin获取中缀式 friend ostream &operator<<(ostream &os, calculator &cal); //根据中缀式计算结果,从cout输出 ``` ## myStack类 calculator内部调用,无需手动include ```cpp template//模板类 myStack::myStack(int size_t); //size_t是栈的大小 myStack::~myStack(); bool myStack::push(T val); //压栈,成功时返回true,否则抛出const char*类型异常 bool myStack::pop(void); //出栈,成功时返回true,否则抛出const char*类型异常 T myStack::top(void); //获取栈顶元素,若栈为空抛出const char*类型异常 bool myStack::empty(void); //栈为空时返回true,否则返回false ``` ## 使用方法 ```cpp #include #include "calculator.h" #define MAX 100 using namespace std; int main(void){ //方法1 calculator cal1(MAX);//创建计算器对象 cin >> cal1;//输入中缀式 cout << cal1 << " or " << cal1.get_result();//输出结果 //方法2 calculator cal2("1+1.255"); cout << cal2.get_result() << endl; //方法3 calculator cal3; cout << cal3.calculate("(1.14+514)/(191-810)"); return 0; } ```