C++
运算符重载
请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。
重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。
#include <iostream>
using namespace std;
class Score
{
int x=0;//分母
int y=0;//分子
public:
Score()
{}
friend Score operator + (Score &s1,Score &s2)
{
Score s3;
s3.x=s1.x*s2.x;
s3.y=s1.y*s2.x+s2.y*s1.x;
for(int i=2;i<=max(s3.x,s3.y);i++)
{
if (s3.x%i==0&&s3.y%i==0)
{
s3.x=s3.x/i;
s3.y=s3.y/i;
i=2;
}
}
return s3;
}
void get(int _y,int _x)
{
x=_x;
y=_y;
}
void display()
{
if(y%x==0||y==0)
{
cout<<y/x;
}
else
{
cout<<y<<" "<<x;
}
}
};
int main()
{
Score s1,s2,s3;
int x1,x2,y1,y2;
cin>>y1>>x1>>y2>>x2;
s1.get(y1,x1);
s2.get(y2,x2);
s3=s1+s2;
s3.display();
return 0;
}