任意数学表达式计算
2009-04-15 20:03:45 来源:WEB开发网2. 有几点需说明:
程序中需要判断符号函数的位置,需加上一标记符,故规定表达式中调用符号函数是必须加上[ ],如sin[30],exp[2+3+sin[30]]等。
对于pow和log,为了使程序具有通用行,规定pow和log的参数为两个,如根号2为pow[2,0.5], log[10,20],log[E,30]等,若输入参数为单个,程序会出现错误报警:表达式非法。
一些基本常识规则在计算表达式是必须遵守,如根号下不能出现负数,即pow[-10,0.5]是违反规则的。
程序中定义了几个基本常数,PI为3.1415926,E为2.71828。如计算ln20时,可输入log[E,20]。
程序涉及角度计算,规定用角度,如30度角正弦函数值:sin[30]
程序中函数调用时必须小写,如SIN,COS,EXP等大写方式为非法调用;变量如PI,E等一定要大写;参数X,Y,Z等务必大写。主要原因是为了防止函数名和变量,常量混合,变量在程序中是通过替换实现的。
程序中若存在符号函数嵌套,需在内层符号函数上加括号,如:pow[2,(sin[30])].对于单个参数的函数,不加括号可以,如sin[sin[30]];对于pow和log必须在嵌套函数中加括号以保证计算的正确性。
程序中很多代码看起来很怪,但是请勿随意删除,每段代码都是调试后加上去的,目的是保证程序的健壮。如减去负数2--2,在程序中要变换为2+2.等。
每次计算均生成result.txt文件存储计算过程,另外step[]用于存储计算步骤,显示计算内容,最多100步,stepNum为当前部数。
程序中定义了参数输入函数:
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个未知
更多精彩
赞助商链接