WEB开发网
开发学院软件开发VC 任意数学表达式计算 阅读

任意数学表达式计算

 2009-04-15 20:03:45 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 1.编程思路任何表达式可分为3类:1.简单表达式,即只带加减乘除的运算表达式,任意数学表达式计算,如1+2,1+3/2,1*2*3+4*6等,程序中支持的函数有:sin,cos,tan,asin,acos,atan,exp,log,sign,pow,2.简单表达式计算函数,2.只带有函

本文示例源代码或素材下载

1.编程思路

任何表达式可分为3类:1.简单表达式,即只带加减乘除的运算表达式,如1+2,1+3/2,1*2*3+4*6等。2.只带有函数符号不带括号的表达式,如sin[30],exp[3+4*5],sin[1+sin[2]]等。3.一般表达式,即带有括号,简单表达式以及符号函数的表达式,如(1+2+sin[30])*3,2+sin[1+(sin[30]+1)*2]等。

基本算法流程图:

任意数学表达式计算

于是问题归结为几个子过程:1.判断表达式中是否存在括号 2.获取最内层括号内容 3.无括号计算函数 4.给定字符串位置,用已知字符串代替原字符串内容。

步骤1,2,4分别可以用一个函数实现:

//判断表达式中是否有括号
bool IsContainBracket(CString str);
//若存在括号,则获得最内层括号位置
void GetBracketPos(CString str,int *start,int *end);
//用一段字符代替两个位置之间的内容
CString ReplaceBetweenPos(CString toBeReplace,CString str,int start,int end);

步骤3较复杂,可以分解为几个子步骤,思路如下:

任意数学表达式计算

于是原问题转换为:1.判断表达式中是否存在符号函数,程序中支持的函数有:sin,cos,tan,asin,acos,atan,exp,log,sign,pow。2.简单表达式计算函数。3. 获得最内层符号函数类型 4. 获得符号函数的参数 5. 根据参数和符号函数类型计算结果 6.代替过程。

1 2 3 4 5  下一页

Tags:任意 数学 表达式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接