📄 expressioncompli.h
字号:
/* Class CExpression Header
/ By Great_csk 2004
/
/
*/
#include "CStack.h"
#include "linknode.h"
#ifndef _EXPRESSIONCOMP_H
#define _EXPRESSIONCOMP_H
#define MAX_EXP 1024
#define STACK_ALL 0
#define STACK_ITEM 1
#define STACK_EXP 2
#define ITEM_TYPE_OPERATOR 1
#define ITEM_TYPE_NULL 0
#define ITEM_TYPE_NUM 2
#define COMPLINE_SUCCEED 1
#define COMPLINE_BAD_TYPE -1
#define ERROR_NULL 0
#define ERROR_COMPLINE -1
#define ERROR_EXP_END 0
#define ERROR_STACK_ERROR -3
#define ERROR_BAD_USEAGE -4
#define ERROR_STACK_OVERFLOW -5
#define ERROR_DIVIDED_BY_ZERO -6
typedef long hResult;
typedef char* pExpression;
struct EXP_ITEM{
union datacollection{
double num_data;
char operator_data;
}itemdata;
int item_type;
};
class CExpression{
public:
CExpression();
~CExpression();
hResult SetExpression(pExpression exp);
hResult Compile();
hResult Solve(double &result);
private:
EXP_ITEM *pexpItem;
CStack stkItems;
CLinkNode stkExp;
long GetNextStrItem(EXP_ITEM * pItem);
int nScanPos;
char *num_table;//="0123456789.";
char *operator_table;//="+-*/()# ^";
public:
pExpression t_expression;
char GetDataType(char t_char);
private:
bool IsInTheTable(char * pTable,char QueryChar);
public:
int StrToFloat(pExpression pExp, int start, int end, double* ans);
int n_last_error;
bool ClearStack(int nType=STACK_ALL);
int OperatorComp(char operator1, char operator2);
private:
int operatorToStack(char operator1, char operator2);
public:
double CalculateValueByOperator(double num1, double num2, char Operator);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -