• 整数展示分数和整形数的四则运算


    文章结束给大家来个序程员笑话:[M]

    /*
    * Copyright (c) 2013, 烟台大学计算机学院
    * All rights reserved.
    * 文件名称:test.cpp
    * 作者:邱学伟
    * 成完日期:2013 年 5 月 4 日
    * 版本号:v1.0
    * 输入描述:无
    * 问题描述:分数和整型数的运算符重载“+ - * /等”
    * 序程出输:
    * 问题析分:
    * 法算计设:略
    */
    #include <iostream>
    #include <cmath>
    using namespace std;
    class CFraction
    {
      private:
      int nume;//子分
      int deno;//分母
      public:
      CFraction(int nu=0,int de=1):nume(nu),deno(de){}//构造函数定义,de=1分母不能为0!
    
      void simplify();//化简分数
      void display();//展示分数
    
      friend CFraction operator+(const CFraction &c1,const CFraction &c2);//分数之间的加减乘除,友元函数现实
      friend CFraction operator-(const CFraction &c1,const CFraction &c2);
      friend CFraction operator*(const CFraction &c1,const CFraction &c2);
      friend CFraction operator/(const CFraction &c1,const CFraction &c2);
    
      friend CFraction operator+(const CFraction &c,const int i);//分数和整数的加减乘除
      friend CFraction operator+(const int i,const CFraction &c);
      friend CFraction operator-(const CFraction &c,const int i);
      friend CFraction operator-(const int i,const CFraction &c);
      friend CFraction operator*(const CFraction &c,const int i);
      friend CFraction operator*(const int i,const CFraction &c);
      friend CFraction operator/(const CFraction &c,const int i);
      friend CFraction operator/(const int i,const CFraction &c);
    
      friend bool operator==(const CFraction &c1,const CFraction &c2);
      friend bool operator!=(const CFraction &c1,const CFraction &c2);
      friend bool operator<=(const CFraction &c1,const CFraction &c2);
      friend bool operator>=(const CFraction &c1,const CFraction &c2);
      friend bool operator>(const CFraction &c1,const CFraction &c2); //比拟小大
      friend bool operator<(const CFraction &c1,const CFraction &c2);
    
      CFraction operator+();//取正
      CFraction operator-();//取反
    };
    
    //分数的化简
    void CFraction::simplify()
    {
        int d,n,r;
        d=fabs(deno);//分母  “fabs()” 的作用求浮点数x的绝对值。
        n=fabs(nume);//子分
        if(d<n)
        {
            r=d;
            d=n;
            n=r;
        }
        while(r=d%n)
        {
            d=n;
            n=r;
        }
        deno=deno/n;
        nume=nume/n;
        //将分母转化成正数
        if(deno<0)
        {
            deno=-deno;
            nume=-nume;
        }
    }
    //展示分数
    void CFraction::display()
    {
        cout<<"("<<nume<<"/"<<deno<<")"<<endl;
    }
    
    //分数相加
    CFraction operator+(const CFraction &c1,const CFraction &c2)
    {
        CFraction c;
        c.nume=c1.nume*c2.deno+c2.nume*c1.deno;
        c.deno=c1.deno*c2.deno;
        c.simplify();
        return c;
    }
    //分数相减
    CFraction operator-(const CFraction &c1,const CFraction &c2)
    {
        CFraction c;
        c.nume=c1.nume*c2.deno-c2.nume*c1.deno;
        c.deno=c1.deno*c2.deno;
        c.simplify();
        return c;
    }
    //分数相乘
    
    CFraction operator*(const CFraction &c1,const CFraction &c2)
    {
        CFraction c;
        c.nume=c1.nume*c2.nume;
        c.deno=c1.deno*c2.deno;
        c.simplify();
        return c;
    }
    
    //分数相除
    CFraction operator/(const CFraction &c1,const CFraction &c2)
    {
        CFraction c;
        c.nume=c1.nume*c2.deno;
        c.deno=c1.deno*c2.nume;
        c.simplify();
        return c;
    }
    
    //分数和整数的加法
    CFraction operator+(const CFraction &c,const int i)
    {
        CFraction c0;
        c0.nume=c.nume+i*c.deno;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    CFraction operator+(const int i,const CFraction &c)
    {
        CFraction c0;
        c0.nume=c.nume+i*c.deno;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    //分数和整数的减法
    CFraction operator-(const CFraction &c,const int i)
    {
        CFraction c0;
        c0.nume=c.nume-i*c.deno;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    CFraction operator-(const int i,const CFraction &c)
    {
        CFraction c0;
        c0.nume=i*c.deno-c.nume;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    //分数和整数的乘法
    CFraction operator*(const CFraction &c,const int i)
    {
        CFraction c0;
        c0.nume=c.nume*i;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    CFraction operator*(const int i,const CFraction &c)
    {
        CFraction c0;
        c0.nume=c.nume*i;
        c0.deno=c.deno;
        c0.simplify();
        return c0;
    }
    //分数和整数的除法
    CFraction operator/(const CFraction &c,const int i)
    {
        CFraction c0;
        c0.nume=c.nume;
        c0.deno=c.deno*i;
        c0.simplify();
        return c0;
    }
    CFraction operator/(const int i,const CFraction &c)
    {
        CFraction c0;
        c0.nume=c.deno*i;
        c0.deno=c.nume;
        c0.simplify();
        return c0;
    }
    //分数取正
    CFraction CFraction::operator +()
    {
        return *this;
    }
    
    //分数取负号
    CFraction CFraction::operator -()
    {
        CFraction c;
        c.deno=-deno;
        c.nume=-nume;
        return c;
    }
    
    //比拟两个分数的小大
    bool operator>(const CFraction &c1,const CFraction &c2)
    {
        double t1,t2;
        t1=c1.nume*c2.deno;
        t2=c2.nume*c1.deno;
        if(t1>t2)
        return true;
        else
        return false;
    }
    bool operator<(const CFraction &c1,const CFraction &c2)
    {
        double t1,t2;
        t1=c1.nume*c2.deno;
        t2=c2.nume*c1.deno;
        if(t1<t2)
        return true;
        else
        return false;
    }
    bool operator >=(const CFraction &c1,const CFraction &c2)
    {
        double t1,t2;
        t1=c1.nume*c2.deno;
        t2=c2.nume*c1.deno;
        if(t1<t2)
        return false;
        else
        return true;
    }
    bool operator <=(const CFraction &c1,const CFraction &c2)
    {
        double t1,t2;
        t1=c1.nume*c2.deno;
        t2=c2.nume*c1.deno;
        if(t1>t2)
        return false;
        else
        return true;
    }
    bool operator ==(const CFraction &c1,const CFraction &c2)
    {
        if(c1!=c2)
        return false;
        else
        return true;
    }
    bool operator!=(const CFraction &c1,const CFraction &c2)
    {
        if(c1>c2 || c1<c2 )
        return true;
        else
        return false;
    }
    int main()
    {
        CFraction x(1,3),y(-5,10),s;
        cout<<"分数x=1/3      y=-5/10"<<endl;
        s=+x+y;
        cout<<"+x+y=";
        s.display();
        s=x-y;
        cout<<"x-y=";
        s.display();
        s=x*y;
        cout<<"x*y=";
        s.display();
        s=x/y;
        cout<<"x/y=";
        s.display();
        s=-x+y;
        cout<<"-x+y=";
        s.display();
    
        x.display();
        if (x>y) cout<<"大于"<<endl;
        if (x<y) cout<<"小于"<<endl;
        if (x==y) cout<<"即是"<<endl;
        y.display();
        cout<<endl;
    
        CFraction c1(5,3),c2;
        //以下提议在调试环境中成完测试,
        c2=c1+5;
        c2=5+c1;
    
        c2=c1-5;
        c2=5-c1;
    
        c2=c1*5;
        c2=5*c1;
    
        c2=c1/5;
        c2=5/c1;
    
        bool b;
    
        b=(c1>2);
        b=(2>c1);
    
    
        return 0;
    }
        每日一道理
    有一首诗最为动人,那就是青春;有一段人生最美丽,那就是青春;有一道风景最为亮丽,那就是青春。青春,不要说已疲惫,也许你的幻想曾被现实无情毁灭,也许你的追求毫无结果,但你应该相信,没有寒风的洗礼,哪来万紫千红的春天,没有心的耕耘,哪有累累硕果?

        整数和展示

    文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗   
      写字楼里写字间,写字间里程序员;
      程序人员写程序,又拿程序换酒钱。
      酒醒只在网上坐,酒醉还来网下眠;
      酒醉酒醒日复日,网上网下年复年。
      但愿老死电脑间,不愿鞠躬老板前;
      奔驰宝马贵者趣,公交自行程序员。
      别人笑我忒疯癫,我笑自己命太贱;
      不见满街漂亮妹,哪个归得程序员。

  • 相关阅读:
    思考题回答
    Winform中DevExpress的TreeList的入门使用教程(附源码下载)
    感兴趣的开源项目列表Java 标签: jfreechart报表引擎图表制作eclipsejavabeans 20080325 11:20 466人阅读
    试用GNU Gettext 开源多语组件包 标签: delphi语言file文本编辑domainstring 20080428 17:54 1330人阅读
    DDK Source Files Allot 标签: ddk测试 20080917 16:03 312人阅读 评论(0)
    Philip 190SW8 LCD 设置 标签: 游戏 20080713 14:45 515人阅读 评论(0)
    爆笑:两分钟让你明白什么是ERP! 标签: 电话工作平台产品 20080326 13:45 311人阅读 评论(0)
    通过控件移动窗体 标签: integer 20080520 16:13 342人阅读 评论(0) 收藏
    Google Web Toolkit 真的至关重要? 标签: googlewebjavascriptgwtajax平台 20080325 09:47 273人阅
    我的Eclipse插件列表 标签: eclipse插件eclipselog4jpropertiestomcattools 20080324 15:11 477人
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3061807.html
Copyright © 2020-2023  润新知