⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 express.h

📁 任意数学表达式计算的源码及测试软件
💻 H
字号:
// Express.h: interface for the CExpress class.
//
//////////////////////////////////////////////////////////////////////
/************************************************************************/
/* 表达式计算类:  CExpress
   版权声明:该类版权属于 南京航空航天大学 能源与动力学院 庄三少
             用于其它商业用途前,请先通知作者,否则视为违法。
			                           
										     庄三少 TEL:13512524413  09.3.19
*/
/************************************************************************/
#if !defined(AFX_EXPRESS_H__FFB6A3DB_D1EC_4C79_BAE1_7C371113D1C4__INCLUDED_)
#define AFX_EXPRESS_H__FFB6A3DB_D1EC_4C79_BAE1_7C371113D1C4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/************************************************************************/
/* 有关三角函数用角度计算,请输入输出时自己转换                         */
/************************************************************************/
#define  SIN   0
#define  COS   1
#define  TAN   2
#define  EXP   3
#define  LOG   4
#define  ASIN  5
#define  ACOS  6
#define  ATAN  7
#define  SIGN  8
#define  POW   9

#define  PI 3.1415926

class CExpress  
{
public:
	CExpress();
	virtual ~CExpress();
	/************************************************************************/
	/*   主函数       南京航空航天大学 庄三少 09.3.17 tel:13512524413                                                             */
	/************************************************************************/
	//主函数,输入一字符串表达式得到计算结果
	double GetResultFrString(CString str);
	//step[100]用于存储计算步骤,显示计算内容,最多100步,stepNum	为当前部数
	CString step[100];
	int stepNum;
	//用于符号计算,parm为符号,val为表达式中替代符号的数值。比如:result=GetResultFrString1("sin[X]","X",30.0),result=GetResultFrString1("sin[Y]","Y",30.0),
    double GetResultFrString1(CString str,CString parm,double val);//一个未知参数
	double GetResultFrString2(CString str,CString parm1,double val1,CString parm2,double val2);//两个未知参数
	double GetResultFrStringN(CString str,CString parm[],double val[],int N);//N个未知参数


private:
	//////////////////////////////////////////////////////
	/*
             	基础函数      南京航空航天大学 庄三少 09.3.17 tel:13512524413
	*/
	//由起始位置和终止位置得到表达式两者之间的内容
	CString GetStrFromStartAndEnd(CString str,int start,int end);
	//判断表达式中是否有括号
	bool IsContainBracket(CString str);
	//若存在括号,则获得最内层括号位置
	void GetBracketPos(CString str,int *start,int *end);
	//用一段字符代替两个位置之间的内容
	CString ReplaceBetweenPos(CString toBeReplace,CString str,int start,int end);
	//判断表达式中是否含有符号函数
	bool IsContainSign(CString str);
	//获得最内层符号函数类型,即符号函数中不存在符号函数,分别返回函数名的位置和参数扩号[]的位置
	int GetSignStyle(CString str,int *sing_s,int *sign_e,int *p_s,int *p_e);
	//获得参数表达式
	CString GetParmString(CString str,int start,int end);
	//如果是双参数的话,则分别得到每个参数的表达式
	void GetParmTwo(CString str,int start,int end,CString *s1,CString *s2);
	//判断是否存在加减乘除
	bool IsJJCC(CString str);	
	bool  IsAddExist(CString str);//+
	bool  IsPulsExist(CString str);//-
	bool  IsTimesExist(CString str);//*
	bool  IsDivideExist(CString str);//chu
	//达到加减乘除的两个参数
	void  GetJJCCTwoParm(CString str,int pos,CString *s1,CString *s2,int *p_start,int *p_end);
	//若存在加减乘除的话,先判断符号类型,再获得加减乘除号的位置,输入具体体判别类型,将获得该符号从左向右的第一个位置
	//调用判别函数后再调用该函数
	int  GetJJCCPos(CString str,CString style);
	//得到加减乘除号的数目
	int GetJJCCNum(CString str,CString name);
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/************************************************************************/
	/* 中间函数                                                             */
	/************************************************************************/
	////计算无符号函数,无括号表达式的值
	void GetSingleValue(CString str,double &result);
	//计算含有符号函数的,无括号的表达式
	void GetSignFuncVal(CString str,double &result);
	//计算括号内容
	void GetBracketResult(CString str,double &result);
	////////计算步骤及结果存储为文件 result.txt
	FILE *resultF;
	///////////预处理函数,包括将大写字母转换为小写,检查表达式合法形
	BOOL Cheak(CString &str);
	
};

#endif // !defined(AFX_EXPRESS_H__FFB6A3DB_D1EC_4C79_BAE1_7C371113D1C4__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -