One 许增宝

C++语言实现分数相加
代码及注释:#include <iostream> #include <stdlib.h>...
扫描右侧二维码阅读全文
10
2019/04

C++语言实现分数相加

C语言实现分数相加.png

代码及注释:

#include <iostream>
#include <stdlib.h>

using namespace std;

class Fract
{
public:
    Fract(int a, int b);
    ~Fract();
    int ged(int m, int n);
    Fract add(Fract f);
    void show();

private:
    int num, den;
};

Fract::Fract(int a = 0, int b = 1)
{
    // num 为分子, den 为分母
    num = a;
    den = b;
}

Fract::~Fract()
{
    // 这里析构函数没用到,所以就没写析构函数得内容
}

int Fract::ged(int m, int n)
{
    // 定义一个 k 来接收 m和n 中的最小值
    int k;
    // 用 for 遍历寻找 m 和 n 得最大公约数
    for ( k = m < n ? m : n; k <= 1; k--)
    {
        if (m % k == 0 && n % k == 0)
            break;
    }
    // 将最大公约数 k 返回
    return k;
}


Fract Fract::add(Fract f)
{
    // 调用ged函数,得到最大公约数并赋值给 v
    int v = ged(den, f.den);
    // 计算最小公倍数并赋值给 anum
    int anum = (den * f.den) / v;
    // 将两数相加
    // den_result 为两数相加后得分母
    int den_result = anum;
    // num_result 为两数相加后得分子
    int num_result = ((anum / den) * num) + ((anum / f.den) * f.num);
    // 定义一个 Fract 对象接收结果
    Fract result_f(num_result, den_result);

    // 返回结果
    return result_f;
}


void Fract::show()
{
    // 打印结果
    cout << this->num << "/" << this->den << endl;
}



int main()
{
    // 定义分数 f1
    Fract f1(1, 5);
    // 定义分数 f2
    Fract f2(7, 20);
    // 将分数 f1 和 f2相加,并将结果赋值给 f3
    Fract f3 = f1.add(f2);
    // 打印分数 f3
    f3.show();


    system("pause");
    return 0;
}
最后修改:2019 年 04 月 13 日 03 : 18 PM

发表评论