分数运算(类+构造)

题目描述
用C++定义和实现一个分数类,并根据要求完成分数对象的运用

分数类包含分子和分母两个属性,操作包括:

  1. 各属性的get方法

  2. 构造函数,初始化分子分母

  3. 相加运算,该运算接收两个分数对象的分子和分母,然后进行分数相加,结果保存在自己的分子和分母中,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,相加结果,A0=A1×B2 + A2×B1,B0=B1×B2

  4. 相乘运算,该运算接收两个分数对象的分子和分母,然后进行分数相乘,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,然后进行分数相乘,A0=A1×A2,B0= B1×B2

  5. 显示函数,显示格式:分数/分母

在主函数中定义若干个分数对象,并使用分数对象进行运算。

提示:每个分数运算都包含三个分数对象,例如要做分数A和B的相加,那么除了A和B还要定义C,通过调用C的相加方法,把A和B的分子分母传递给C运算,结果保存在C中

注意:提交代码时必须用注释划分出三个区域:类定义、类实现、主函数,如下

//-----类定义------
class XXX

{ // 写类定义代码

};

//----类实现------

void Process::XXX()

{ // 写类定义代码

};

//-----主函数-----

int main()

{

//写对象的创建和运行过程

return 0;

}

输入
第一行输入t表示有t个测试实例

第二行输入第一个分数的分子和分母,都用整数输入,都不为0

第三行输入第二个分数的分子和分母,都用整数输入,都不为0

依次类推输入其他实例的分数分子和分母

注意:如果分数是负数,负号在分子中输入,例如负的五分之三,则分子为-3,分母为5

输出
输出每个实例的运算结果,每个实例包含三行

第一行输出要运算的两个分数对象

第二行输出两个分数相加的结果,注意相加的运算、结果显示都要使用第三个对象的方法

第三行输出两个分数相乘的结果,注意相乘的运算、结果显示都要使用第三个对象的方法

样例输入
2
2 3
4 5
-3 4
5 6
样例输出
2/3 4/5
22/15
8/15
-3/4 5/6
2/24
-15/24

#include <iostream>
#include<iomanip>
#include<cmath>

using namespace std;

//-----类定义------
class CFraction
{
private:
    int fz, fm;
public:
    CFraction();
    CFraction(int fz_val, int fm_val);
    void add(const CFraction& a, const CFraction& b);
    void mul(const CFraction& a, const CFraction& b);
    int getFz();
    int getFm();
    void print();
};

//----类实现------
CFraction::CFraction()
{
    fz = 0;
    fm = 0;
}
CFraction::CFraction(int fz_val, int fm_val)
{
    fz = fz_val;
    fm = fm_val;
}
int CFraction::getFz()
{
    return fz;
}
int CFraction::getFm()
{
    return fm;
}
void CFraction::add(const CFraction& a, const CFraction& b)
{
    fz = a.fz * b.fm + b.fz * a.fm;
    fm = a.fm * b.fm;
}
void CFraction::mul(const CFraction& a, const CFraction& b)
{
    fz = a.fz * b.fz;
    fm = a.fm * b.fm;
}
void CFraction::print()
{
    cout << fz << "/" << fm;
}

//-----主函数-----
int main()
{
    int fz1, fm1, fz2, fm2;

    int t;
    cin >> t;
    while (t--)
    {
        cin >> fz1 >> fm1;
        cin >> fz2 >> fm2;
        CFraction c1(fz1, fm1), c2(fz2, fm2);
        CFraction c3;
        c1.print();
        cout << " ";
        c2.print();
        cout << endl;
        c3.add(c1, c2);
        c3.print();
        cout << endl;
        c3.mul(c1, c2);
        c3.print();
        cout << endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值