请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。
重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。
输入:
第一行的两个数分别表示第一个分数的分子和分母(分母不为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(); }
标签:分数,5.5,num3,int,number,分母,friend From: https://www.cnblogs.com/dmx-03/p/17375615.html