c++分数计算器含源码_第1页
c++分数计算器含源码_第2页
c++分数计算器含源码_第3页
c++分数计算器含源码_第4页
c++分数计算器含源码_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用文档一、实验设计方案1、实验内容与目的简单介绍实验内容,说明实验目的实验目的:设计一个分数计算器:1实现输入>>,输出<<,+,-,*,/运算符的 重载;2实现分子分母的约分与规格化.实验内容:你的具体选择要详细实现分数计算器的屏幕输入和输出:1输入采用文件input.txt 输入,可以有 任意个二元分数表达式,表达式之间的分隔符自定义;2输出到文件output.txt 2、实验准备工作阐述解决问题所涉及的算法思想,至少要画一个算法流程图来说明以下为循环计算二元分数计算式的流程图:在实验中还需要面对六个运算符重载,通过运算符重载,我们可以简单的使用分数 计算,而不需

2、要关心它的结构,运算符重载,我们根据根本的数学定理,将加减乘除包 装,并重载了输入输出运算符,这样,在输入输出时便可直接输出用户方便接收的格式.二、实验步骤、测试与结果分析文案大全实用文档1、源程序的设计(在此附上源程序(cpp文件)清单)#include<iostream>#include<fstream>#include<cmath>using namespace std;/- 创立分数类class Fractionprivate:int nume;int deno;int Gcf(int m,int n);和n最大公因数public:Fraction(

3、int n=1,int d=1);virtualFraction.void Reduction();int GetNume() constreturn nume;int GetDeno() constreturn deno;void SetNume(int n);void SetDeno(int d);Fraction operator+(const Fraction &a) const;Fraction operator-(const Fraction &a) const;Fraction operator*(const Fraction &a) const;Frac

4、tion operator/(const Fraction &a) const;ostream &operator << (ostream &out,const Fraction &a); <<istream &operator >> (istream &in,Fraction &a);符>>/- 最大公因数函数int Fraction:Gcf(int m,int n)if(n=0) return m;为最大公因数else return Gcf(n,m%n);/- 约分函数void Frac

5、tion二Reduction./分子/分母/辅助函数,返回m/约分/返回分子/返回分母/设置分子/设置分母/重载加法符+/重载加法符-/重载加法符*/重载加法符/重载输出运算符/重载输入运算/ 如果 n=0 , m/否者辗转相除文案大全实用文档if(deno<0)/假设分母小于0 ,将符号提前(nume=-nume;deno=-deno;)int f=Gcf(abs(nume),deno);nume=nume/f;/ 实现约数deno=deno/f;)/ 构造函数Fraction:Fraction(int n,int d):nume(n),deno(d)(if(deno=0) cout&

6、lt;<"分母为 0"<<endl;/ 查出异常Reduction();/ 约分)/- 设置分母函数void Fraction二SetNume(int n) (nume=n;Reduction();)/- 设置分子函数void Fraction二SetDeno(int d)(if(d=0) cout<<"分母为 0"<<endl;/ 查出异常deno=d;Reduction();)/- 重载运算符+Fraction Fraction二operator+(const Fraction &a) const(F

7、raction result;result.nume=this->nume*a.deno+this->deno*a.nume;/ 求和的分子result.deno=this->deno*a.deno;/ 求和的分母result.Reduction();/ 约分return result;/ 返回和)/- 重载运算符Fraction Fraction二operator-(const Fraction &a) const (Fraction result;文案大全实用文档result.nume=this->nume*a.deno-this->deno*a.nu

8、me;/ 求差的分子result.deno=this->deno*a.deno;/ 求差的分母result.Reduction();/ 约分return result;/ 返回差/- 重载运算符*Fraction Fraction二operator * (const Fraction &a) const(Fraction result;result.nume=this->nume*a.nume;/ 求积的分子result.deno=this->deno*a.deno;/ 求积的分母result.Reduction();/ 约分return result;/ 返回积/-

9、 重载运算符/Fraction Fraction:operator / (const Fraction &a) const(if(a.nume=0) cout<<" 除数为 0"<<endl;/ 如果除数为 0 ,输出异常Fraction result;result.nume=this->nume*a.deno;/ 求商的分子result.deno=this->deno*a.nume;/ 求商的分母result.Reduction();/ 约分return result;/ 返回商/- 重载运算符<<ostream &

10、amp;operator << (ostream &out,const Fraction &a)(out<<a.GetNume()<<"/"<<a.GetDeno();/ 按一定格式输出分数return out;/返回输出流/- 重载运算符>>istream &operator >> (istream &in,Fraction &a) (char ch; int m,n;/接收字符/定义分子和分母文案大全实用文档in>>m;in>>ch;i

11、f(ch !='/') cout<<" 非法字符"<<endl;in>>n;if(n=0) cout<<"分母为 0"<<endl;出异常/输入分子/输入/输入分母/如果分母为0 ,输a.SetNume(m);a.SetDeno(n);a.Reduction();/设置分子 /设置分母/约分return in;/返回输入流int main(void)Fraction obj1,obj2,result; char index,ch;/定义两个分数和结果/定义符号ifstream i

12、nfile("input.txt",ios:in);if(!infile)cout<<"翻开文件 input.txt 失败! "<<endl; exit(1);/以输入的方式翻开文件/假设文件翻开失败ofstream outfile("output.txt",ios:app);if(!outfile)cout<<"翻开文件 output.txt 失败"<<endl;exit(1);/以输出的方式翻开文件/假设文件翻开失败outfile<<"for

13、(;)完成infile>>obj1;infile>>index;符号infile>>obj2;infile>>ch;果本次计算结果如下"<<endl;/无限次循环直到求解/输入第一个分数/输入需要执行的操作/输入第二个分数/选择继续或者计算结if(index='+') result=obj1+obj2;/加法文案大全实用文档else if(index='-') result=obj1-obj2;/ 减法else if(index='*') result=obj1*obj2;/

14、乘法else if(index='/') result=obj1/obj2;/ 除法else system("PAUSE"); return 0;cout<<"正在计算"<<obj1<<" "<<index<<" "<<obj2<<"<<endl;ofstream outfile("output.txt",ios:app); if(!outfile) cout<<

15、"翻开文件 output.txt 失败"<<endl; exit;oufile<<obj1<<" "<<index<<" "<<obj2<<" "<<"="<<" "<<result<<endl;/输出结果到 output.txt/假设遇到;",继续执行/假设遇到"=",计算结果谢 谢 使 用/文件输出流关闭/文件输

16、出流关闭cout<<"计算完成,结果保存在 output.txt 中"<<endl<<endl;if(ch='') continue;else if(ch='=')outfile<<""<<endl<<endl;break;outfile.close();infile.close();system("PAUSE");return 0; 2、实验现象及结论应用文字和程序运行的截图说明程序测试现象,并解释结果input.txt输入截图如

17、下:文案大全实用文档Jcsy.exe 执行截图如下:1 B:VProgras FilesXCYuTanXbinVwvteMp. exe正在计算1J2 +,算完成,结果保存在口Utput.txt中正在计算1/6 * 5/6计算完成,结果保存在口皿七put .txt中请按任意键继续-.- output.txt输出截图如下:input.txt输入截图如下:文案大全实用文档jcsy.exe执行截图如下:寸、D=PrograA FilesCYuY3nbinwvte»p. exe,算完成,结果'保存在口皿txt中正在计算4/5 / 1/78计算完成,结果保存在mtput .txt中请按任

18、意键继续. - - Output.txt 输出截图如下:3、实验总结是否成功解决问题,总结实验中最有价值的内容,程序能够在哪些方面进文案大全实用文档步改善,自我评价成败得失试验中,我们根据从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;通过对例题的学习,我们最终将正确的代码编写出,并在不断地修改之下做到方便 用户使用的要求;编码的速度有一个从慢到快的过程,在本次试验中,我们的速度依然比拟慢,这看 出我们平时编码比拟少,缺乏熟练度,并对算法了解不深入;但是我们的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需 要等待几秒钟.冉以后我们将通过练习根底功,简化程序代码,实现简单代码完善功能 的理想.1 .编码要尽量使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论