首页 > 其他分享 >5.5

5.5

时间:2023-05-05 22:55:28浏览次数:47  
标签:分数 5.5 num3 int number 分母 friend

            请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。

          重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。

输入:

        第一行的两个数分别表示第一个分数的分子和分母(分母不为0)。第二行的两个数分别表示第二个分数的分子和分母。

输出:

       第一个数表示分子,第二个数表示分母(若分数代表的是整数,则不输出分母)。

输入样例:

         1  5

         2  5

代码实例:

 #include<bits/stdc++.h>
using namespace std;
class number
{
    int fz, fm;
    friend number operator+(number &n1,number &n2);
    public:
    number(int a=0,int b=1)
    {
        fz=a;
        fm=b;
    }
    friend int gcd(int a,int b);
    friend int min_gb(number &n1,number &n2);
    int show()
    {
        cout<<fz;
        if(fm!=1) 
        {
            cout<<" "<<fm;
        }
    }
};

int gcd(int a, int b)
{
    if(b==0)
    {
        return a;
    }
    else
    {
        return gcd(b,a%b);
    }
}
    
    int min_gb(number &n1,number &n2)
    {
        return n1.fm*n2.fm/gcd(n1.fm,n2.fm);
    }
    
    number operator+(number &n1,number &n2)
    {
        number nn;
        int a=min_gb(n1,n2);
        nn.fm=a;
        nn.fz=(a/n1.fm)*n1.fz+(a/n2.fm)*n2.fz;
        int b=gcd(nn.fz,nn.fm);
        if(b!=1)
        {
            nn.fz=nn.fz/b;
            nn.fm=nn.fm/b;
        }
        return nn;
    }
    
    int main()
    {
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        number num1(a,b);
        number num2(c,d);
        number num3;
        num3=num1+num2;
        num3.show();
    }
复制代码

 

标签:分数,5.5,num3,int,number,分母,friend
From: https://www.cnblogs.com/dmx-03/p/17375615.html

相关文章

  • 5.5 2.4
    一、问题描述一个口袋中有12个球,已知其中三个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少颜色搭配。二、分析8个红球中,m个红球,n个白球,黑球为8-n-m个。m[0,3]  n[0,3]   8-n-m<=6 三、代码#include<iostream>usingnamespacestd;intmain(){intm=0;//......
  • 5.5每日总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • 每日总结-23.5.5
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • 5.5
    #include"time_user.h"  time_user::time_user(void){}  time_user::~time_user(void){} voidtime_user::timeset(){   cin>>h>>m>>s;} voidtime_user::timedis(){   cout<<h<<":"<<m<&l......
  • 2023.5.5——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习并开会。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 建民打卡日记5.5
    一、问题描述本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。二、流程设计实际上本题考察分数相加:即分母通分,分子相加,约分。 最大公约数gcd(),使用递归的方式实现辗转相除法求最大公约数。 returnb......
  • 每日总结 5.5
    今天学习了HTML页面的刷新。<ahref="javascript:location.reload();">点击重新载入页面</a><ahref="javascript:history.go(0);">点击重新载入页面</a><ahref="javascript:location=location;">点击重新载入页面</a><ahref="j......
  • 5.5
    #include<stdio.h>main(){longn,sum,i;while(scanf("%ld",&n)!=EOF){printf("在1-%ld之间的阶梯数为:\n",n);sum=0;for(i=7;i<=n;i++)if(i%7==0)if(i%6==5)if(i%5==4)if(i%3==2){sum++;printf("%ld\n",i);}printf("在1-%ld之间,有%ld个......
  • 2023.5.5 面向对象程序设计实验报告
    实验项目名称:模板一、实验目的1、熟练掌握函数模板和类模板的定义格式。2、熟练运用函数模板和类模板解决实际问题。二、实验内容1、复数类Complex有两个数据成员:a和b,分别代表复数的实部和虚部,并有若干构造函数和一个重载-(减号,用于计算两个复数的距离)的成员函数。要求设计......
  • 5.5打卡
     template<classT>voidsort(T*a,intsize){for(inti=0;i<size;i++){cin>>a[i];}for(inti=0;i<size;i++){intmin=i;for(intj=i+1;j<size;j++){if(a[min]>......