《C++教学资料》43四则表达式运算.doc

《C++教学资料》43四则表达式运算.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河北工业大学计算机软件技术基础(VC)2012年课程设计报告 学院 信息工程学院 班级 电技111班 姓名 张礼 学号 112019成绩____ 题目: 四则表达式计算 该函数实现除法的运算。 代码参见chufa函数。 jisuan模块 该函数把整个表达式存为字符数组,按照四则运算规则寻找其中的运算符号,然后提取左右两侧操作数计算,用计算结果替换掉计算的表达式,这样整体表达式会被简化,继续重复这个过程,直到找不到运算符为止,从而解决了四则运算优先级的问题。 代码参见jisuan函数。 设计中的主要困难及解决方案 主要困难就是优先级的问题,设计之初想到了从第二个数字开始找,找前后的运算符,如果是加减就先不管,乘除就进行计算,然后用计算得到的数代替原数字和运算符,接着就像这样算,后来发现这有难度,参见了任务书之后发现新方法,原理和第一个相同,就把这个问题解决了。 4、你所设计的程序最终完成的功能 说明你编制的程序能完成的功能 能够由用户直接输入四则运算表达式,按回车后输出结果。 准备的测试数据及运行结果 三、程序清单 1)main函数 //主函数 void main()//主函数 { double t; char e[]=0; char linshi[N]; char jisuanshi[N];//用来存放计算式 cout请输入一个数学四则表达式(分母不为0),按回车结束endl;//输入计算式 cinjisuanshi; if(jisuanshi[0]==-||jisuanshi[0]==+) { strcat(e,jisuanshi); strcpy(jisuanshi,e); } strcpy(linshi,jisuanshi); t=jisuan(linshi);//计算 coutjisuanshi=tendl; //输出 } 2)xiaoshudian函数 double xiaoshudian(char x[])//判断是否有小数点 { for(int i=0;istrlen(x);i++) if(x[i]==.) { double num = 0.1; sscanf(x, %f, num); return num; } else return atof(x); } 3)jiafa函数 double jiafa(char x[],char y[])//计算加法 { double a,b; a=xiaoshudian(x); b=xiaoshudian(y); double c=a+b; return c; } 4)jianfa函数 double jianfa(char x[],char y[])//计算减法 { double a,b; a=xiaoshudian(x); b=xiaoshudian(y); double c=a-b; return c; } 5)chengfa函数 double chengfa(char x[],char y[])//计算乘法 { double a,b; a=xiaoshudian(x); b=xiaoshudian(y); double c=a*b; return c; } 6)chufa函数 double chufa(char x[],char y[])//计算除法 { double a,b; a=xiaoshudian(x); b=xiaoshudian(y); double c=a/b; return c; } 7)jisuan函数 double jisuan(char pstr[])//主要计算 { char stringleft[N],stringright[N],suanleft[N],suanright[N],suan[N],fuhao;//fuhao代表运算符 double suanjieguo,jieguo; int n=0; for(int i=0;istrlen(pstr);i++)//先算乘除 { if(pstr[i]==*||pstr[i]==/) { fuhao=pstr[i]; for(int j=i-1;j=0;j--)// 获取左边要计算的数据和该数据前的字符串stringleft { if(pstr[j]==-||pstr[j]==+) { for(in

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档