- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
四则运算程序报告
四则运算
程序功能简介:
该程序用字符串的形式接收一个带括号的四则运算的表达式,然后按照四则运算优先级的算法先括号,后乘方、乘除、加减这样的顺序将这个算式解出。
该程序的设计比较巧妙,是在主程序中反复查找最后一对括号,将其中的结果计算出来,去掉括号,这样的过程持续下去,最后导致所有的括号都去除,解出算式。
课程设计要求:
用类的形式改写程序,将数据和函数封装到类中。
修改主程序结构,使程序可以反复运算,直到选择退出为止。
扩充程序功能,使程序适合浮点运算。
增加程序的判断功能,当有非法输入(如字母等),给出提示信息并退出运算,当输入带有空格使,能将空格滤除。
评定难易等级:A级。
程序设计思想:
类的封装:
class CStr // 定义一个字符串类
{
private:
int nLen; //字符串长度
char *pStr; //字符串首地址
public:
CStr(){nLen=0;pStr=NULL;} //构造函数
CStr(CStr str); //拷贝的构造函数
~CStr(){if(pStr) delete[]pStr;} //析构函数
int GetLen(){return nLen;} //返回字符串长度
CStr Midstr(CStr str,int nStart,int nLength); /*返回字符串类中从nStart序号开始nLength长度的字符串*/
CStr Left(CStr str,int nLength); //返回制定字符串类中从左边开始nLength个字符
CStr Right(CStr str,int nLength); //返回制定字符串类中从右边开始nLength个字符
CStr Calculate(); //计算该字符串所代表的四则运算的值(内无括号)
int CharInStr(char chChar); //判断字符chChar是否在字符串中
double Val(); //求字符串代表的数字字符的数值
char GetChar(int i){return *(pStr+i);} //返回字符串中第i个字符
CStr Str(double val); //将数值表示成字符串的形式
CStr operator=(CStr ); //重载赋值运算符
friend CStr operator+(CStr ,CStr ); //友元,实现字符串类的加法
operator char *(){return(char *)pStr;} //将字符串类转换成字符数组
friend istream operator(istream ,CStr ); //重载输入运算符
int Judge(); //判断输入法是否合法,滤除空格
};
对程序设计要求的解答所遇到的问题及解决方案:
(1)用类的形式改写程序,将数据和函数封装到类中。
程序一开始定义了一个字符串类CStr如上,包含十七个公有成员函数,并已经在类内定义函数原型。
课本中给出了十个成员函数的源代码,而且构造函数,拷贝构造函数及析构函数已经给出。但left,right,midstr,str,calculate五个函数均有返回值,将return语句删掉。同时val函数的返回值类型也需要修改。再在类外,补充定义为类的成员函数即可。(具体程序代码见课本)
还缺少一些重载运算符函数,友元函数和Judge函数,补充在后。
(2)修改主程序结构,使程序可以反复运算,直到选择退出为止。
课本中将主函数的源程序代码基本设计好,不过界面提示语是英文,运用起来有些不太方便。我先将其翻译成中文,便于阅读和使用。
关于反复运算的要求,在学长的指点下,使用了while循环语句,具体的还是不怎么理解。但是运行是正确的,好像是用到了第八部分的二叉数有关程序。
(3)扩充程序功能,使程序适合浮点运算。
除了在运算符中增加小数点“.”之外,还需要更改部分函数的返回值类型(如val函数)与部分变量的类型。
(4)增加程序的判断功能,当有非法输入(如字母等),给出提示信息并退出运算,当输入带有空格使,能将空格滤除。
关于Judge函数的源程序代码,设计如下:
int Judge()
{
char *p,*s,*r,*source=pstr;
p=source;s=p+1;
while(*p!=0) //滤去空格
{r=p;
if(*p== ){
while(*s!=0){*p=*s;p++;s++;}
*p=
您可能关注的文档
- 分光光度法测定鱼皮中羟脯氨酸含量_郭恒斌.pdf
- 分布式无线温湿度检测与传输系统的设计.pdf
- 分布式目标参数估计的波束域处理方法-张林让.pdf
- 分户验收的一些要求和控制要点.doc
- 分数百分数应用题解法经典解读.docx
- 分数的基本性质4.3教学设计.doc
- 分数表示可能性的大小新.doc
- 分布虚拟环境中视景系统的视点变换与图像平滑的研究.pdf
- 分析化学,简答题.docx
- 分析工具LV73 内部外部矩阵.docx
- 四川-消防水泵接合器及室外消火栓安装工程检验批质量验收记录 SG-A005.doc
- 四川(成都)路径识别调研.docx
- 四川农业大学《生物统计附试验设计(本科)》17年9月在线作业 (资料).doc
- 四川农业大学《行为矫正技术(专科)》17年9月在线作业 (资料).doc
- 四川农业大学《高层建筑与抗震设计(本科)》17年9月在线作业(资料).doc
- 四川大学《护理研究8801》17春在线作业2.doc
- 四川-消防水泵接合器及室外消火栓安装工程检验批质量验收记录_SG-A005.doc
- 四川省专升本《高等数学A》复习资料.doc
- 四年级上册数学教案观察物体.doc
- 四年级下册第一单元过关试卷.doc
原创力文档


文档评论(0)