每日一练哇,大家都有什么好办法呐

设计一个分数类(Fraction):数据成员包括分子(m_numerator)和分母(m_denominator),分子默认值为0,分母默认值为1。需要满足如下条件:
(1)具有分子和分母两个形参的构造函数;
(2)具有拷贝构造函数;
(3)实现计算分数值的操作;
(4)实现=运算符和*=运算符的重载;(成员函数)
(5)实现关系运算符==的重载,判断两个Fraction类是否相等;(普通函数)
(6)实现输入输出运算符的重载(友元函数);
(7)实现算术运算符/的重载,实现两个分数的除法运算(友元函数)。

运行结果如下:

img

代码如下:

#include <iostream>
using namespace std;

class Fraction
{
public:
    double mFz;
    double mFm;
    //构造函数
    Fraction(double fz=0,double fm=1){mFz=fz,mFm =fm;}
    //拷贝构造函数
    Fraction(Fraction &c){mFm=c.mFm;mFz=c.mFz;}
    //计算分数值
    double value()
    {
        if(mFm!=0) 
            return mFz/mFm; 
        else 
            return 0;
    }
    //
    Fraction operator =(const Fraction c)
    {
        mFm=c.mFm;
        mFz=c.mFz;
        return *this;
    }
    Fraction operator *=(const Fraction c)
    {
        mFz *= c.mFz;
        mFm *= c.mFm;
        return *this;
    }

    bool operator ==(Fraction &c)
    {
        if(this->value() == c.value())
            return true;
        if(mFz == c.mFz && mFm==c.mFm)
            return true;
        else
            return false;
    }
    friend ostream & operator<<( ostream & os,const Fraction & c);
    friend istream & operator>>( istream & is,Fraction & c);

    Fraction  operator /(const Fraction b)
    {
        Fraction c;
        c.mFz = mFz*b.mFz;
        c.mFm = mFm*b.mFm;
        return c;
    }
};

ostream & operator<<( ostream & os,const Fraction & c)
{
    os <<"("<< c.mFz << "/" << c.mFm<<")" ;
    return os;
}

istream & operator>>(istream &is,Fraction &c)
{
    char ch;
    is >> c.mFz >> ch >> c.mFm;
    return is;
}

int main()
{
    Fraction a(2,3);
    Fraction b(4,5);
    cout << "a="<<a<<endl;
    cout <<"b="<<b<<endl;
    Fraction c = a; //拷贝构造函数
    cout << "c="<<c <<endl; //显示c
    c *= b;
    cout <<"c*=b后  c="<< c<<endl; //显示乘以b后的数
    if (c==b)
    {
        cout <<c<< "等于"<<b<<endl;
    }else
        cout << c<<"不等于"<<b<<endl;


    Fraction d;
    cout << "请输入一个分数:";
    cin >> d; //输入d
    cout << d<<endl; //输出

    Fraction e = a/d;
    cout <<a<<"/"<<d <<"="<<e<<endl;


    return 0;
}


这不需要好办法啊,按照要求定义类和实现函数就好了啊。