*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年5月25日
* 版本号:V1.0
* 问题描述:分数类的重载取倒数
* 程序输入:无
* 程序输出:见运行结果
*/
#include<iostream>
#include<Cmath>
using namespace std; class CFraction{
private:
int nume; //分子
int deno; //分母
public:
CFraction(int nu=0,int de=0);
CFraction operator+(const CFraction &n); //分数相加
CFraction operator-(const CFraction &n); //分数相减
CFraction operator*(const CFraction &n); //分数相乘
CFraction operator/(const CFraction &n); //分数相除
void display(); //输出分数
void simplify(); //分数化简
bool operator>(const CFraction &c);
bool operator<(const CFraction &c);
bool operator==(const CFraction &c);
bool operator!=(const CFraction &c);
bool operator>=(const CFraction &c);
bool operator<=(const CFraction &c);
CFraction operator+(); //取正一目运算
CFraction operator-(); //取反一目运算
CFraction operator~(); //分数取倒数
}; CFraction::CFraction(int nu,int de) //构造函数
{
nume=nu;
deno=de;
}
void CFraction::display() //输出函数
{
cout<<nume<<"/"<<deno<<endl;
}
void CFraction::simplify() //分数化简
{
int m,n,r;
n=fabs(deno);
m=fabs(nume);
if(nume==0)
deno=0;
else{
while(r=m%n) // 求m,n的最大公约数
{
m=n;
n=r;
}
deno/=n; // 化简
nume/=n;
if (deno<0) // 将分母转化为正数
{
deno=-deno;
nume=-nume;
}
}
}
CFraction CFraction::operator +(const CFraction &n) //定义分数相加
{
CFraction t;
t.deno=this->deno*n.deno;
t.nume=this->nume*n.deno+n.nume*this->deno;
t.simplify();//化简
return t;
}
CFraction CFraction::operator -(const CFraction &n) //定义分数相减
{
CFraction t;
t.deno=this->deno*n.deno;
t.nume=this->nume*n.deno-n.nume*this->deno;
t.simplify();//化简
return t;
}
CFraction CFraction::operator *(const CFraction &n) //定义分数相乘
{
CFraction t;
t.deno=n.deno*this->deno;
t.nume=n.nume*this->nume;
t.simplify();//化简
return t;
}
CFraction CFraction::operator /(const CFraction &n) //定义分数相除
{
CFraction t;
t.deno=n.nume*this->deno;
t.nume=n.deno*this->nume;
t.simplify();//化简
return t;
} //比较运算符重载
bool CFraction::operator >(const CFraction &c) // >重载
{
int this_nume,c_nume,common_deno;
this_nume=nume*c.deno; // 计算分数通分后的分子,同分母为deno*c.deno
c_nume=c.nume*deno;
common_deno=deno*c.deno;
if ((this_nume-c_nume)*common_deno>0) return true;
return false;
}
bool CFraction::operator<(const CFraction &c)
{
int this_nume,c_nume,common_deno;
this_nume=nume*c.deno;
c_nume=c.nume*deno;
common_deno=deno*c.deno;
if ((this_nume-c_nume)*common_deno<0) return true;
return false;
} // 分数比较大小
bool CFraction::operator==(const CFraction &c)
{
if (*this!=c) return false;
return true;
} // 分数比较大小
bool CFraction::operator!=(const CFraction &c)
{
if (*this>c || *this<c) return true;
return false;
} // 分数比较大小
bool CFraction::operator>=(const CFraction &c)
{
if (*this<c) return false;
return true;
} // 分数比较大小
bool CFraction::operator<=(const CFraction &c)
{
if (*this>c) return false;
return true;
}
// 分数取正号
CFraction CFraction:: operator+()
{
return *this;
} // 分数取负号
CFraction CFraction:: operator-()
{
CFraction x;
x.nume=-this->nume;
x.deno=this->deno;
return x;
}
CFraction CFraction::operator ~()
{
CFraction t;
t.deno=this->nume;
t.nume=this->deno;
return t;
}
int main()
{
CFraction a(2,3),b(1,3);
CFraction c;
c=a+b;
cout<<"c=";
c.display();
c=a*b;
cout<<"c=";
c.display();
c=a-b;
cout<<"c=";
c.display();
c=a/b;
cout<<"c=";
c.display();
if(a>b)
cout<<"a>b"<<endl;
cout<<"a=";
a.display();
cout<<"取倒数后a为:";
c=~a;
c.display();
return 0;
}

运行结果:

最新文章

  1. 带你实现开发者头条APP(四)---首页优化(加入design包)
  2. 注解:【有连接表的】Hibernate双向1-&gt;N关联 (N端、1端同时参与控制关联关系)
  3. JS&amp;CSS文件请求合并及压缩处理研究(五)
  4. [Linux][Hadoop] 将hadoop跑起来
  5. 4s前置摄像头调用
  6. Request Tracker 4.0.13 发布
  7. 利用Hudson持续集成来执行Android自动化测试(转)
  8. 解决python version 2.7 required,which was not find in the registry
  9. 防止浏览器拦截的window.open新窗口方案
  10. 【Linux】Zabbix + MPM + msmtp + mutt 监控MySQL + 邮件报警
  11. Oracle笔记-表的管理
  12. [Redis] C#中使用redis
  13. UVA - 10574 Counting Rectangles
  14. 基于visual Studio2013解决C语言竞赛题之1011对称
  15. Android中Activity之间访问互传参数
  16. js中document.write()使用方法
  17. Spring整合Hibernate--声明式事务管理
  18. 文字在div中水平和垂直居中的的css样式
  19. SAP高可用性(HA)
  20. Java虚拟机之类加载机制

热门文章

  1. F - kebab HDU - 2883 (最大流构图)
  2. 14 微服务电商【黑马乐优商城】:day04-项目搭建(一)
  3. BinarySearchTree(二叉搜索树)原理及C++代码实现
  4. jsp页面之间传中文参数显示乱码问题的解决
  5. 调用其他VBA工程中的过程和函数以及API函数
  6. hibernate的乐观锁和悲观锁+事务
  7. php 二维码
  8. OpenAL介绍
  9. jquery框架概览(二)
  10. android优化中国风应用、完整NBA客户端、动态积分效果、文件传输、小说阅读器等源码