#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; const int MAX=1505; char data[MAX]; //存放输入的表达式 double num[MAX]; //存表达式中的数字 char sign[MAX]; //存表达式中的符号 int ntop,stop,w; //ntop标记数字栈顶元素的位置,stop标记符号栈顶元素的位置 double sum; //结果 int kk; //菜单类 class menu { public: void getmenu(); //菜单的构造函数 }; //菜单的构造函数的具体实现 void menu::getmenu() { cout<<"======================================================== "; cout<<"=================这是一个计算器程序===================== "; cout<<"======================================================== "; cout<<"* 说明:可以进行+ - * / 操作您还可以用括号输入您的表达式 * "; cout<<"* 您输入表达式不需要输=号 例:您可输入(1+2)*3//4+5 然后回车 * "; cout<<"======================================================== "; cout << " 输入exit回车,结束程序运行 "; } //基本+-*/计算类 class dshn { char * sign; public: dshn() //类构造函数的具体实现 { sign=NULL; //把sign的指针初始化为空 } void count(char * signs); //实现基本+-*/运算的函数 }; //基本的+-*/运算函数的具体实现 void dshn::count(char * signs) { sign=signs; if(sign[stop]=='+') //判断符号栈栈顶符号 { num[ntop-1]+=num[ntop]; //取当前数字栈栈顶前两数字进行该符号运算,结果存入栈顶前一个单元 ntop--; //抛掉数字栈顶元素,以便下一个新数字存入栈顶 } else if(sign[stop]=='-') { num[ntop-1]-=num[ntop]; ntop--; } else if(sign[stop]=='*') { num[ntop-1]*=num[ntop]; ntop--; } else if(sign[stop]=='/') { if(num[ntop]==0) { kk=1; } else { num[ntop-1]/=num[ntop]; ntop--; } } else if(sign[stop]!='