分数类中的运算符重载(第八周任务三)

来源:互联网 发布:android 启动优化 编辑:程序博客网 时间:2024/06/04 19:38
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:                              
* 作    者: 李超                             
* 完成日期: 2012  年 4  月 10   日
* 版 本 号:          01.08.03

* 对任务及求解方法的描述部分
* 问题描述: 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
* 程序头部的注释结束

*/

头文件CFraction.h

#include <iostream>using namespace std;class CFraction{private:int nume;  // 分子int deno;  // 分母public://构造函数,初始化用CFraction(int nu=0,int de=1): nume(nu), deno(de) {};//加减乘除四则运算    CFraction operator + (CFraction &c);CFraction operator - (CFraction &c);CFraction operator * (CFraction &c);CFraction operator / (CFraction &c);//取正反CFraction operator + ();//取正CFraction operator - ();//取反//判断bool operator > (CFraction &c);bool operator < (CFraction &c);bool operator >= (CFraction &c);bool operator <= (CFraction &c);bool operator == (CFraction &c);bool operator !=(CFraction &c);void display();//化简、输出};//加减乘除四则运算CFraction CFraction::operator + (CFraction &c){return CFraction (nume * c.deno  + deno * c.nume , deno * c.deno);}CFraction CFraction::operator - (CFraction &c){return CFraction (nume * c.deno  - deno * c.nume , deno * c.deno);}CFraction CFraction::operator * (CFraction &c){return CFraction (nume * c.nume , deno * c.deno);}CFraction CFraction::operator / (CFraction &c){return CFraction (nume * c.deno , deno * c.nume);}//取正反CFraction CFraction::operator + ()//取正{return *this;}CFraction CFraction::operator - ()//取反{CFraction c;c.nume = -nume;c.deno = deno;return c;}//判断bool CFraction::operator > (CFraction &c){if (nume * c.deno > c.nume * deno)return true;elsereturn false;}bool CFraction::operator < (CFraction &c){if (nume * c.deno < c.nume * deno)return true;elsereturn false;}bool CFraction::operator >= (CFraction &c){if (nume * c.deno >= c.nume * deno)return true;elsereturn false;}bool CFraction::operator <= (CFraction &c){if (nume * c.deno <= c.nume * deno)return true;elsereturn false;}bool CFraction::operator == (CFraction &c){if (nume * c.deno == c.nume * deno)return true;elsereturn false;}bool CFraction::operator !=(CFraction &c){if (nume * c.deno != c.nume * deno)return true;elsereturn false;}void CFraction::display()//化简(使分子分母没有公因子){int nu = nume, de = deno,temp, a;if(nu > de){temp = nu;nu = de;de= temp;}while(nu != 0){a = de % nu;de = nu;nu = a;}deno = deno / de;nume = nume / de; cout <<nume <<'/' <<deno <<endl;}

主函数CFraction.cpp

#include <iostream>#include "CFraction.h"using namespace std;void main()  {      CFraction x(5, 9), y(-4, 7), z;     cout <<"分数x=5/9" <<'\t' <<"y=-4/7" <<endl;      z = +x + y;      cout <<"+x+y=";      z.display (); cout <<"-x-y=";z = -x - y;z.display ();    z = x - y;      cout <<"x-y=";      z.display ();      z = x * y;      cout <<"x*y=";     z.display ();      z = x / y;      cout <<"x/y=";     z.display ();      z = -x + y;      cout <<"-x+y=";      z.display ();      x.display();      if (x > y) cout <<"大于"<<endl;     if (x<y) cout<<"小于"<<endl;     if (x==y) cout<<"等于"<<endl;     y.display ();    cout<<endl;      system("PAUSE");  }  

编出来一个,全都出来了,感觉好爽!

欢迎大家多给评语


原创粉丝点击