《C#高级编程》源代码的进

《C#高级编程》源代码的进

ID:41037421

大小:37.50 KB

页数:10页

时间:2019-08-14

《C#高级编程》源代码的进_第1页
《C#高级编程》源代码的进_第2页
《C#高级编程》源代码的进_第3页
《C#高级编程》源代码的进_第4页
《C#高级编程》源代码的进_第5页
资源描述:

《《C#高级编程》源代码的进》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/*程序名称:表达式计算器编译环境:MicrosoftVisualC++6.0时间:200801*//*说明:采用树形结构处理表达式,按优先级运算结果,一个加,减,乘,除或数值为一个节点优先级如下:函数:4括号:3乘除:2加减:1*/#include#include#include#include#includeusingnamespacestd;constcharNUM[]={'0','1','2','3','4','5','6','7','8','9','.'};constchar

2、OPERATION[]={'+','-','*','/'};constdoublePI=3.14159265358979;constdoubleEE=2.71828182818281;classFun//处理系统数学函数的类{public:Fun(stringo,intt,doublel=0.0,doubler=0.0):op(o),type(t),lvalue(l),rvalue(r){}staticstringFUN[];doublecalc();private:inttype;//66601sin9023!33C2stringop;//函数类型doublelvalue

3、;//函数左边的值doublervalue;//函数右边的值staticintFunNum;};intFun::FunNum=10;stringFun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^","-"};/*函数说明:1:log是以10为底的工程对数2:ln是以e为底的自然对数3:C计算组合数输入规则如计算3取2的组合输入表达式3C24:A计算排列数输入规则如计算3取2的排列输入表达式3A25:!计算阶乘6:^x的y次方输入x^y*/intfactorial(intn)//阶乘函数{inti,s=1;for(i

4、=1;i<=n;i++)s*=i;returns;}intC(inta,intb){returnfactorial(a)/(factorial(b)*factorial(a-b));}intA(inta,intb){returnfactorial(a)/factorial(b);}doubleFun::calc()//计算系统函数的值{if(type==0)returnlvalue;else{if(op=="!")returnfactorial(lvalue);if(op=="sin")returnsin(rvalue/180*PI);if(op=="cos")return

5、cos(rvalue/180*PI);if(op=="tan")returntan(rvalue/180*PI);if(op=="log")returnlog10(rvalue);if(op=="ln")returnlog10(rvalue)/log10(EE);if(op=="C")returnC(lvalue,rvalue);if(op=="A")returnA(lvalue,rvalue);if(op=="^")returnpow(lvalue,rvalue);if(op=="-")return-rvalue;else{stringerr="暂时没有函数"+op;Me

6、ssageBox(NULL,err.c_str(),"错误",MB_OK);return0;}}}structUnit//双向链表保存运算单元{Unit(intp,charo,stringc,doublev,intt,Unit*pr=NULL,Unit*n=NULL):PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}intPRI;//优先级charOperation;//操作符stringCode;//原始代码doublevalue;//数据intType;//类型操作符0数据1函数2Unit*Pr

7、e;//构成双向链表Unit*Next;};classNode//表达式树状结构的节点{public:Node(charo,intp,inte=1,doublev=0,Node*ph=NULL,Node*pl=NULL,Node*pr=NULL):Operation(o),PRI(p),Expression(e),value(v),Head(ph),Left(pl),Right(pr){}Node*Head;//节点的根,左树枝,右树枝Node*Left;Node*Right;doubleGetValue();ch

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。