ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:37.07KB ,
资源ID:6760883      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6760883.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(43四则表达式计算.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

43四则表达式计算.docx

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

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

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

4、nt strnum=0,operatenum=0; /* 子字符串个数,操作符个数 */int i,j,k,flag;float f=0.0,str_f50;2) 主函数int main()int len;float temp;cout 请输入要计算的表达式:str;/coutendl;len=strlen(str);if(strlen-1=)strlen-1=0;/有等号去除,没等号就计算strcpy(str1,str);SplitPrem(str1);temp=Combine();cout 运算结果为:endl;cout str=setprecision(4)tempendl;/syste

5、m(pause);return 0; /* 此函数的作用是分解为子字符串和操作符 */如123+321/就分解为123 + 321 void SplitPrem(char *str1)j=strlen(str1);sub_str0=str10;k=1;for( i=1; i0)sub_strk=0;strcpy(str2strnum,sub_str);strnum+;for( i=0; istrnum; i+)str_fi=atof(str2i); /* 字符串转化为浮点数 */3)计算/*此函数的作用先计算乘除,后计算加减,每计算一次,子字符串和操作符向前移动,即删除已经计算过的,将后面的字

6、符串和操作符向前移动进行计算 */float Combine()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;for( j=i; joperatenum-1; j+)operate_cj=operate_cj+1;operate_2strj=operate_2strj+1-1;for( j=operate_2stri+1; jstrnu

7、m-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;operate_2strj=operate_2strj+1-1;for( j=operate_2stri+1; jstrnum-1; j+)str_fj=str_fj+1; operatenum=operat

8、enum-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;for( j=i; joperatenum-1; j+)operate_cj=operate_cj+1;operate_2strj=operate_2strj+1-1;for( j=operate_2

9、stri+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;operate_2strj=operate_2strj+1-1;for( j=operate_2stri+1; jstrnum-1; j+)str_fj=str_fj+1; ope

10、ratenum=operatenum-1;strnum=strnum-1;flag=1;if(flag=0)break;return f;/返回最后的函数值给主函数即计算结果四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。在进行程序设计的过程中,虽然能够运用一些设计步骤,但发现自己仍然对许多方面的内容理解不够透彻,在设计程序时,通过大量的资料查询才使程序得以完善。在进行实际设计这一方面仍然缺乏经验,需要在今后的学习中加大课程设计方面的练习让自己的编程能力逐步提升。2、对课题提出更完善的方案本课题是计算简单的四则计算,应该在计算时加上括号和函数,这样会使程序更加完美。五、收获及心

11、得体会在进行此次课题设计的过程中,不仅使我加深了对所用函数的理解,更加了解了程序在运行中的结构特点,让我对所用的函数更加的理解和能够熟练的应用自己掌握的函数。通过此次课程设计,发现自己在编程方面仍然有许多不足之处,许多步骤需要通过借助资料及同学的指点才能顺利运行。虽然在设计程序过程中遇到了许多问题,但在解决这些问题的过程中受益匪浅,使自己更好的理解了程序的意义,希望在今后通过更多的实践机会使得自己提高此方面的能力。2014年6月19日程序:#include#include #includeusing namespace std;/*函数声明*/void SplitPrem(char *str)

12、; /解析操作数和操作符float Combine(); /定义计算的具体方法char str200,str1200,str25030,operate_c50,sub_str30;int operate_2str50;int strnum=0,operatenum=0; /* 子字符串个数,操作符个数 */int i,j,k,flag;float f=0.0,str_f50;/*主函数*/int main() int len; float temp; cout 请输入要计算的表达式:str; /coutendl; len=strlen(str); if(strlen-1=)strlen-1=0

13、;/有等号去除,没等号就计算 strcpy(str1,str); SplitPrem(str1); temp=Combine(); cout 运算结果为:endl; cout str=setprecision(4)tempendl; /system(pause); return 0; /* 此函数的作用是分解为子字符串和操作符 */如123+321/就分解为123 + 321 void SplitPrem(char *str1) j=strlen(str1); sub_str0=str10; k=1; for( i=1; i0) sub_strk=0; strcpy(str2strnum,su

14、b_str); strnum+; for( i=0; istrnum; i+) str_fi=atof(str2i); /* 字符串转化为浮点数 */*此函数的作用先计算乘除,后计算加减,每计算一次,子字符串和操作符向前移动,即删除已经计算过的,将后面的字符串和操作符向前移动进行计算 */float Combine() 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;

15、str_foperate_2stri=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;

16、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; if(flag=0)break; while(1) flag=0; for( i=0; ioperatenum; i+) if(operate_ci=+|operate_ci=-) if(operate_ci=+)/定义加法 f=st

17、r_foperate_2stri+str_foperate_2stri+1; str_foperate_2stri=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_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; return f;/返回最后的函数值给主函数即计算结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1