热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第八周作业3.0

*(程序头部注释开始)*程序的版权和版本声明部分*Copyright(c)2011,烟台大学计算机学院学生*Allrightsreser

/* (程序头部注释开始)  

* 程序的版权和版本声明部分  

* Copyright (c) 2011, 烟台大学计算机学院学生   

* All rights reserved.  

*     者:   孙建朋                   

* 完成日期:  2012        4       11      

* 版本号:  2011041130          

  

* 对任务及求解方法的描述部分  

* 输入描述:   

* 问题描述:  实现分数中的运算符重载,用于计算分数之间的加减乘除化简,求反比较等运算

* 程序输出:   

* 程序头部的注释结束

 

#include     
using namespace std;  
int gcd(int x,int y);    //求最大公约数  
class CFraction    
{    
private:    
    int nume;  // 分子    
    int deno;  // 分母    
public:    
    CFraction(int nu=0,int de=1):nume(nu),deno(de){}    
    void simplify();    
    void display();    
    CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简    
    CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简    
    CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简    
    CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简    
    CFraction operator+();  //取正一目运算    
    CFraction operator-();  //取反一目运算    
    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);    
};    
    
//化简(使分子分母没有公因子)     
void CFraction::simplify()    
{    
    int n=gcd(nume,deno);    
    nume/=n;    
    deno/=n;   
    if (deno<0)  // 将分母转化为正数    
    {    
        deno=-deno;    
        nume=-nume;    
    }    
  
}    
//求最大公约数;     
int gcd(int x,int y)    
{    
    int r;    
    while(y!=0)    
    {    
        r=x%y;    
        x=y;    
        y=r;    
    }    
    return x;    
}    
  
    
//显示分数    
void CFraction::display()    
{    
    cout<<"("<(const CFraction &c)    
{    
    int this_nu,c_nu,com_de;    
    this_nu=nume*c.deno;        // 计算分数通分后的分子,同分母为deno*c.deno    
    c_nu=c.nume*deno;     
    com_de=deno*c.deno;    
    if (this_nu>c_nu&&com_de>0||this_nuc || *this=(const CFraction &c)    
{    
    if (*thisc)   
        return false;    
    else  
        return true;    
}    
    
int main()    
{    
    CFraction x(7,8),y(-5,15),s;    
    cout<<"俩分数分别为:"<y) cout<<"大于";    
    if (x 
 


 

 

 


推荐阅读
author-avatar
wonderoil
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有