5.5
请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。
重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。
输入:
第一行的两个数分别表示第一个分数的分子和分母(分母不为0)。第二行的两个数分别表示第二个分数的分子和分母。
输出:
第一个数表示分子,第二个数表示分母(若分数代表的是整数,则不输出分母)。
输入样例:
1 5
2 5
代码实例:
#include<bits/stdc++.h> using namespace std; class number { int fz, fm; friend number operator+(number &n1,number &n2); public: number(int a=0,int b=1) { fz=a; fm=b; } friend int gcd(int a,int b); friend int min_gb(number &n1,number &n2); int show() { cout<<fz; if(fm!=1) { cout<<" "<<fm; } } }; int gcd(int a, int b) { if(b==0) { return a; } else { return gcd(b,a%b); } } int min_gb(number &n1,number &n2) { return n1.fm*n2.fm/gcd(n1.fm,n2.fm); } number operator+(number &n1,number &n2) { number nn; int a=min_gb(n1,n2); nn.fm=a; nn.fz=(a/n1.fm)*n1.fz+(a/n2.fm)*n2.fz; int b=gcd(nn.fz,nn.fm); if(b!=1) { nn.fz=nn.fz/b; nn.fm=nn.fm/b; } return nn; } int main() { int a,b,c,d; cin>>a>>b>>c>>d; number num1(a,b); number num2(c,d); number num3; num3=num1+num2; num3.show(); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤