1、private: int nume; /分子 int deno; /分母 int Gcf(int m,int n); /辅助函数,返回m和n最大公因数public: Fraction(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+(c
2、onst Fraction &a) const; /重载加法符+ Fraction operator-(const Fraction & /重载加法符- Fraction operator*(const Fraction & /重载加法符* Fraction operator/(const Fraction & /重载加法符/;ostream &operator (ostream &out,const Fraction &a); /重载输出运算符 (istream &in,Fraction & /重载输入运算符/-最大公因数函数-int Fraction:Gcf(int m,int n) if
3、(n=0) return m; /如果n=0,m为最大公因数 else return Gcf(n,m%n); /否者辗转相除/-约分函数-void Fraction:Reduction() if(deno0) /若分母小于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分母为0endl; /查出异常 Reduction(); /
4、约分/-设置分母函数-SetNume(int n) nume=n;/-设置分子函数-SetDeno(int d) if(d=0) coutnume*a.deno+this-deno*a.nume; /求和的分子 result.deno=this-deno*a.deno; /求和的分母 result.Reduction(); /约分 return result; /返回和/-重载运算符-operator-(const Fraction &nume*a.deno-this- /求差的分子 /求差的分母 /返回差/-重载运算符*-operator * (const Fraction &nume*a.
5、nume; /求积的分子 /求积的分母 /返回积/-重载运算符/-operator / (const Fraction & if(a.nume=0) cout除数为0 /如果除数为0,输出异常nume*a.deno; /求商的分子 /求商的分母 /返回商/-重载运算符-a) outa.GetNume() char ch; /接收字符 int m,n; /定义分子和分母 inm; /输入分子ch; /输入/ if(ch !=/) cout非法字符n; /输入分母 if(n=0) cout /如果分母为0,输出异常 a.SetNume(m); /设置分子 a.SetDeno(n); /设置分母 a
6、.Reduction(); return in; /返回输入流int main(void) Fraction obj1,obj2,result; /定义两个分数和结果 char index,ch; /定义符号 ifstream infile(input.txt,ios:in); /以输入的方式打开文件 if(!infile) /若文件打开失败 cout打开文件input.txt失败! exit(1); ofstream outfile(output.txtapp); /以输出的方式打开文件outfile) /若文件打开失败打开文件output.txt失败 outfileobj1; /输入第一个
7、分数index; /输入需要执行的操作符号obj2; /输入第二个分数 /选择继续或者计算结果 if(index=+) result=obj1+obj2; /加法 else if(index=-) result=obj1-obj2; /减法*) result=obj1*obj2; /乘法) result=obj1/obj2; /除法 else system(PAUSE); return 0; 正在计算obj1 indexobj2. ofstream outfile( if(!outfile) cout exit(1); outfile=result /输出结果到output.txt计算完成,结
8、果保存在output.txt中endl if(ch=) continue; /若遇到,继续执行 else if(ch=) /若遇到,计算结果 outfile-谢谢使用- break; outfile.close(); /文件输出流关闭 infile.close(); /文件输出流关闭 system( return 0;2、 实验现象及结论(应用文字和程序运行的截图说明程序测试现象,并解释结果)input.txt 输入截图如下:Jcsy.exe 执行截图如下:output.txt 输出截图如下:jcsy.exe 执行截图如下:Output.txt 输出截图如下:3、 实验总结(是否成功解决问题,
9、总结实验中最有价值的内容,程序能够在哪些方面进一步改善,自我评价成败得失)试验中,我们按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;通过对例题的学习,我们最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;编码的速度有一个从慢到快的过程,在本次试验中,我们的速度依然比较慢,这看出我们平时编码比较少,缺乏熟练度,并对算法了解不深入;但是我们的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。再以后我们将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。1. 编码要尽量使程序简
10、单,采用最切实可靠的算法,实现封装,不同部分的代码应分工明确,最后由主函数统一调用;2. 编写完成后先自己检查一遍代码,然后由机器检测,找出错误的根源,从不同角度思考如何解决问题;3. 测试时应尽可能输入各种可能情况的数据以确保程序准确无误。4. 应避免任何可能的漏洞,使代码的可用性和可靠性增强。5. 试验中,我按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;6. 通过对例题的学习,我最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;7. 编码的速度有一个从慢到快的过程,在本次试验中,我的速度依然比较慢,这看出我平时编码比较少,缺乏熟练度,并对算法了解不深入;8. 但是我的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。再以后我将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。本次试验中,我们先将书上的代码编译通过,通过讨论,认为书上检查异常的方式不便于理解,于是直接采用输出到dos窗口的方式,所以没有使用到utility.h头文件,同时,由于我们电脑上安装的编译系统不方便对.h文件进行调试修改,所以我们采用的cpp文件,在一个cpp文件中写下所有代码。对于txt文件输出的格式,我们做的稍微人性化,界面简洁,容易区分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1