43四则表达式计算

上传人:夏** 文档编号:552557195 上传时间:2023-06-21 格式:DOCX 页数:10 大小:50.61KB
返回 下载 相关 举报
43四则表达式计算_第1页
第1页 / 共10页
43四则表达式计算_第2页
第2页 / 共10页
43四则表达式计算_第3页
第3页 / 共10页
43四则表达式计算_第4页
第4页 / 共10页
43四则表达式计算_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《43四则表达式计算》由会员分享,可在线阅读,更多相关《43四则表达式计算(10页珍藏版)》请在金锄头文库上搜索。

1、河北工业大学计算机软件技术基础(VC)2014年课程设计报告学院班级姓名学号成绩一、题目四则表达式计算(43)二、设计思路1、总体设计1)分析程序的功能程序可以计算用户输入的简单四则表达式(只包括加减乘除符号且不带括号)。2)系统总体结构:系统主要用来计算简单的四则表达式,当用户输入需要计算的表达式后,系统会给出一个正确答案(除了括号)。系统主要分为4大部分,主函数,运算表达式的存储,数和字符数组之间的转化,计算逻辑。模块函数名称主函数main运算表达式的存储string数和字符数组之间的转化splitprem计算逻辑combine通过提示我们输入需要计算的四则表达式,然后得到正确的结果(除了

2、括号)。2、各函数的功能和模块的设计:1)声明函数声明函数主要是对所用函数的声明,主要起对所调用的函数的说明作用。代码参见函数。2)主函数主函数部分是函数的核心部分,主要的作用是对函数的运算的执行。和对运算的控制。代码参见函数3)运算表达式的储存储存主要定义字符数组来储存,由于在运算过程中会出现小数,而小数会加长表达式,所以在定义字符数组的时候定义的足够长。代码参见函数4)数和字符数组之间的转化计算前需要将字符序列转化为浮点数来运算,同样的,运算结果要替换表达中的字符序列也需要也需要先转化车字符串,这可以使用string.h定义下的函数。代码参见函数5)计算逻辑计算逻辑主要是对你输入的四则表达

3、式的计算,它主要运用if和for语句。代码参见函数3、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能能够计算简单的四则表达式(除了括号)。当你输入一个四则运算是,程序会输出相应的结果。2)准备的测试数据及运行结果以下是输入的四则表达式5*8/6+7=13.67程序的主界面如下:三、程序清单1)函数声明voidSplitPrem(char*str);floatCombine();charstr200,str1200,str25030,operate_c50,sub_str30;intoperate_2str50;intstrnum=0,operatenum=0;/*子字符串个数,操

4、作符个数*/inti,j,k,flag;floatf=0.0,str_f50;2)主函数intmain()intlen;floattemp;coutstr;/coutvvendl;len=strlen(str);if(strlen-1=)strlen-1=0;有等号去除,没等号就计算strcpy(str1,str);SplitPrem(str1);temp=Combine();coutvv运算结果为:vvendl;coutvvstrvv=vvsetprecision(4)vvtempvvendl;/system(pause);return0;/*此函数的作用是分解为子字符串和操作符*/如123

5、+321/就分解为123+321voidSplitPrem(char*str1)j=strlen(str1);sub_str0=str10;k=1;for(i=1;ivj;i+)if(str1i=*|str1i=/|str1i=+|str1i=-)sub_strk=0;strcpy(str2strnum,sub_str);operate_coperatenum=str1i;operate_2stroperatenum=strnum;strnum+;operatenum+;k=0;elsesub_strk=str1i;k+;if(k0)sub_strk=0;strcpy(str2strnum,s

6、ub_str);strnum+;for(i=0;istrnum;i+)str_fi=atof(str2i);/*字符串转化为浮点数*/3)计算/*此函数的作用先计算乘除,后计算加减,每计算一次,子字符串和操作符向前移动,即删除已经计算过的,将后面的字符串和操作符向前移动进行计算*/floatCombine()while(1)flag=0;for(i=0;ioperatenum;i+)if(operate_ci=*|operate_ci=/)if(operate_ci=*)/定义乘法f=str_foperate_2stri*str_foperate_2stri+1;str_foperate_2s

7、tri=f;for(j=i;joperatenum-1;j+)operate_cj=operate_cj+1;operate_2strj=operate_2strj+1-1;for(j=operate_2stri+1;jstrnum-1;j+)str_fj=str_fj+1;operatenum=operatenum-1;strnum=strnum-1;flag=1;else定义除法f=str_foperate_2stri/str_foperate_2stri+1;str_foperate_2stri=f;for(j=i;joperatenum-1;j+)operate_cj=operate_

8、cj+1;operate_2strj=operate_2strj+1-1;for(j=operate_2stri+1;jstrnum-1;j+)str_fj=str_fj+1;operatenum=operatenum-1;strnum=strnum-1;flag=1;if(flag=0)break;while(1)flag=0;for(i=0;ioperatenum;i+)if(operate_ci=+|operate_ci=-)if(operate_ci=+)定义加法f=str_foperate_2stri+str_foperate_2stri+1;str_foperate_2stri=f

9、;for(j=i;joperatenum-1;j+)operate_cj=operate_cj+1;operate_2strj=operate_2strj+1-1;for(j=operate_2stri+1;jstrnum-1;j+)str_fj=str_fj+1;operatenum=operatenum-1;strnum=strnum-1;flag=1;else定义减法f=str_foperate_2stri-str_foperate_2stri+1;str_foperate_2stri=f;for(j=i;joperatenum-1;j+)operate_cj=operate_cj+1;

10、operate_2strj=operate_2strj+1-1;for(j=operate_2stri+1;jstrnum-1;j+)str_fj=str_fj+1;operatenum=operatenum-1;strnum=strnum-1;flag=1;if(flag=0)break;returnf;返回最后的函数值给主函数即计算结果四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。在进行程序设计的过程中,虽然能够运用一些设计步骤,但发现自己仍然对许多方面的内容理解不够透彻,在设计程序时,通过大量的资料查询才使程序得以完善。在进行实际设计这一方面仍然缺乏经验,需要在今后的学

11、习中加大课程设计方面的练习让自己的编程能力逐步提升。2、对课题提出更完善的方案本课题是计算简单的四则计算,应该在计算时加上括号和函数,这样会使程序更加完美。五、收获及心得体会在进行此次课题设计的过程中,不仅使我加深了对所用函数的理解,更加了解了程序在运行中的结构特点,让我对所用的函数更加的理解和能够熟练的应用自己掌握的函数。通过此次课程设计,发现自己在编程方面仍然有许多不足之处,许多步骤需要通过借助资料及同学的指点才能顺利运行。虽然在设计程序过程中遇到了许多问题,但在解决这些问题的过程中受益匪浅,使自己更好的理解了程序的意义,希望在今后通过更多的实践机会使得自己提高此方面的能力。2014年6月

12、19日程序:#include#include#includeusingnamespacestd;/*函数声明*/voidSplitPrem(char*str);/解析操作数和操作符floatCombine();/定义计算的具体方法charstr200,str1200,str25030,operate_c50,sub_str30;intoperate_2str50;intstrnum=0,operatenum=0;/*子字符串个数,操作符个数*/inti,j,k,flag;floatf=0.0,str_f50;/*主函数*/intmain()intlen;foarrempjCourAA-a郵烟斗

13、罟济n=Aend_;cinvvss二courAAend-j-enHSq-en(sq-)jir(SE_enH”)SE_eno#nM、issq-cpy(ss、sq-)jsp=rprem(ss)jrempHcombinesCourAA-BIWHS冊/=AenduCourAASq-AAf-AAserprecision(4)AArempAAend-j二system(=pause-)j一君123+321二玛耦谜123二+二321-voidsp=rprem(char*ss)宀H-s1T-en(s1Tl)jsubsq-oHSq-lojkHljfor(HljAjj+)宀wsq-lnllHJ-sq-lnllHT-

14、su-lnll尢一-sq-lnllHJsub_strk=0;strcpy(str2strnum,sub_str);operate_coperatenum=str1i;operate_2stroperatenum=strnum;strnum+;operatenum+;k=0;elsesub_strk=str1i;k+;if(k0)sub_strk=0;strcpy(str2strnum,sub_str);strnum+;for(i=0;istrnum;i+)str_fi=atof(str2i);/*字符串转化为浮点数*/*此函数的作用先计算乘除,后计算加减,每计算一次,子字符串和操作符向前移动,即删除已经计算过的,将后面的字符串和操作符向前移动进行计算*/floatCombine()while(1)flag=0;for(i=0;ioperatenum;i+)if(operate_ci=*|operate_ci=/)if(operate_ci=*)/定义乘法f=str_foperate_2stri

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号