// UGMathString.h: interface for the UGMathString class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_UGMATHSTRING_H__F18A04C8_CDB4_414C_9C5F_814AAC86E3C4__INCLUDED_)#define AFX_UGMATHSTRING_H__F18A04C8_CDB4_414C_9C5F_814AAC86E3C4__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "Stream/ugdefs.h"namespace UGC{#define MAX_STRING_LENGTH 1024class ALGORITHM_API UGMathString{public:UGMathString();UGMathString(UGchar *s); //构造函数,将算术表达式*s赋给stringUGMathString(UGchar *s,UGdouble x); //表达式中带未知数的构造函数//算术表达式*s赋给string,未知数x赋给xx//用于积分表达式void Initial(UGchar *str,UGdouble x);void Initial(UGchar *s);virtual ~UGMathString();//成员函数void setX(UGdouble x); //设置成员变量xx的值UGint checkString(void); //检查输入的表达式是否正确,包括括号是否//配对、库函数是否正确,不检查小数点、逗号//是否正确//若正确,将表达式中的大、中括号该成小括号//并在表达式尾加‘#’标识//若正确,返回值为1;否则返回0;//因积分表达式中有x,所以表达式中的x作为//字符处理UGint stringToBolan(void); //将算术表达式string转化成波兰表达式,//波兰表达式放在bolan[]中UGint compvalue(void); //计算波兰表达式bolan[]的值//若计算中途没有发生错误,则返回0,并将求得//的波兰表达式值存入result//若计算中途发生错误(如除数为0),则UGdouble getvalue(void); //返回计算得到的表达式值,//内部功能函数protected:UGint seekStr(UGchar *str,UGint &i,UGchar *s);//检查字符窜str的第i个位置开始的后面字符是否与字符窜s相匹配//是的话将i=i+len(s),并返回1,否则返回0UGdouble stringToDigital(UGchar *s); //将数字字符串转化成数值//返回值为字符串的数值// Pick函数比较特殊,参数个数不固定,所以这里统计一下待选栅格或常量的个数UGint GetPickCount(UGchar *str, UGint i);//成员变量UGchar string[MAX_STRING_LENGTH]; //存放算术表达式UGdouble xx, //存放积分或函数中的xresult; //算术表达式的值struct Bolan //存放波兰表达式的结构{UGint flag; //标识该节点是数值、运算符还是函数//0为数值,1为运算符,2为函数UGdouble value; //数值值UGchar oper; //运算符 +,-,*,/,~(取反),(,)UGint func; //函数的编号,各函数编号及功能见开始部分Bolan(){flag = -2;value = 0.0;oper = 0;func = 0;}};public:Bolan bolan[MAX_STRING_LENGTH]; //存放转化后的波兰表达式};}#endif // !defined(AFX_UGMATHSTRING_H__F18A04C8_CDB4_414C_9C5F_814AAC86E3C4__INCLUDED_)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型