用栈实现复杂四则运算的C语言代码

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:04:13

#include <cstdio>
#include <cstdlib>
#include <cstring>
class CalcInfixExp
{
public:
CalcInfixExp();
char calc(double &result, const char *s);
void error(char n);
char GetOrder(char a, char b);
bool NumPush(const char &a);
bool NumPop(char &a);
bool OpePush(const char &a);
bool OpePop(char &a);
private:
int p, q;
char ope[100];
char num[100];
};

CalcInfixExp::CalcInfixExp()
{
p=q=0;
};

bool CalcInfixExp::NumPush(const char &a)
{
if (q>=100) return false;
num[q++]=a;
return true;
}

char CalcInfixExp::calc(double &result, const char *s)
{
bool PopRight;
char f, szA[20], order;
int i;
double a, b, c;
p=q=0; //清空ope栈和num栈
OpePush('\0');
if (*s=='+