c++把一个有理数转为分数的程序案例代码

题目描述

使用C++编写程序把一个有理数转为分数

编写代码

以下是一个将有理数转为分数的C++函数:

#include <iostream>
#include <cmath>

using namespace std;

int gcd(int a, int b) {
    if (a == 0) {
        return b;
    }
    return gcd(b % a, a);
}

void toFraction(double num) {
    // 将有理数转化为分数
    int sign = num >= 0 ? 1 : -1;
    num = abs(num);
    int wholePart = floor(num);
    double fractionPart = num - wholePart;
    int precision = 1000000; // 精度,这里我们取六位小数
    int numerator = round(fractionPart * precision);
    int denominator = precision;
    int commonFactor = gcd(numerator, denominator);
    numerator /= commonFactor;
    denominator /= commonFactor;
    // 输出结果
    if (sign == -1) {
        cout << "-";
    }
    if (wholePart != 0) {
        cout << wholePart << " ";
    }
    cout << numerator << "/" << denominator << endl;
}

int main() {
    double num = 3.14159265358979323846;
    toFraction(num);
    return 0;
}

该函数将有理数转化为分数,并输出结果。在函数中,我们首先得到有理数的符号,并将其转换为正数。然后,我们将有理数分为整数部分和小数部分,并将小数部分乘以精度(这里我们取六位小数)以获得分子和分母。接下来,我们使用最大公约数来简化分数,并输出结果。

运行截图

图片[1]-c++把一个有理数转为分数的程序案例代码-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享