练车加端盘子也挡不住我学习系列——分数的四则运算

本文详细介绍了分数的四则运算实现,包括加法、减法、乘法和除法,并提供了分数结构化简的方法。通过具体算法展示如何进行分数的运算及化简过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分数的四则运算

分数结构

struct Fraction
{
    int up,down;//分子,分母
};

分数的化简

int gcd(int up,int down)//求最大公约数
{
    if(down==0) return up;
    else return gcd(down,up%down);
}
Fraction reduction(Fraction result)//分数的化简
{
    if(result.down<0)//分母小于0时
    {
        result.up=-result.up;
        result.down=-result.down;
    }
    if(result.up==0) result.down=1;
    else
    {
        result.up/=gcd(abs(result.up),abs(result.down));
        result.down/=gcd(abs(result.up),abs(result.down));
    }
    return result;
}

加法运算

Fraction add(Fraction f1,Fraction f2)//加法运算
{
    Fraction result;
    result.up=f1.up*f2.down+f2.up*f1.down;
    result.down=f1.down*f2.down;
    return reduction(result);
}

减法运算

Fraction minu(Fraction f1,Fraction f2)//减法运算
{
    Fraction result;
    result.up=f1.up*f2.down-f2.up*f1.down;
    result.down=f1.down*f2.down;
    return reduction(result);
}

乘法运算

Fraction multi(Fraction f1,Fraction f2)//乘法运算
{
    Fraction result;
    result.up=f1.up*f2.up;
    result.down=f1.down*f2.down;
    return reduction(result);
}

除法运算

Fraction divide(Fraction f1,Fraction f2)//除法运算
{
    Fraction result;
    result.up=f1.up*f2.down;
    result.down=f1.down*f2.up;
    return reduction(result);
}

输出函数

void showResult(Fraction r)//输出函数
{
    reduction(r);
    if(r.down==1) cout<<r.up;
    else if(abs(r.up)>r.down)
        cout<<r.up/r.down<<" "<<abs(r.up)%r.down<<"/"<<r.down;
    else cout<<r.up<<"/"<<r.down;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无所畏惧的man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值