4月26日

发布时间 2023-04-26 18:53:07作者: kxzzow

请定义一个分数类,拥有两个整数的私有数据成员,分别表示分子和分母(分母永远为正数,符号通过分子表示)。
重载运算符加号"+",实现两个分数的相加,所得结果必须是最简分数。

输入:

第一行的两个数 分别表示 第一个分数的分子和分母(分母不为0)。 第二行的两个数 分别表示 第二个分数的分子和分母。

输出:

第一个数表示分子,第二个数表示分母(若分数代表的是整数,则不输出分母)。

输入样例:

1  5
2  5

 

输出样例:

3 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;
            //这里要注意空格和fz一起输出,如果分母为1,不需要输出空格,所以空格不能和fz一起输出
    }
};

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();
}

题目描述:建立一个复数类,实数和虚数是其私有数据成员。建立一个>(大于号)的运算符重载,比较两个复数间模的大小。

输入格式:测试输入包含若干测试用例,每个测试用例占一行。每个测试用例包括四个数字,前两个数字分别表示第一个复数的实部和虚部,第三个和第四个数字分别表示第二个复数的实部和虚部。每个数字之间用空格间隔。当读入一个测试用例是0 0 0 0时输入结束,相应的结果不要输出。

输出格式:对每个测试用例输出一行。当第一个复数的模大于第二个复数的模时,输出 true ,当第一个复数的模小于或等于第二个复数的模时,输出false

输入样例:

   3 5 4 0

   0 3 4 1

   0 0 0 0

输出样例:

   true

   false

#include<iostream>
#include<math.h>
using namespace std;
class Complex {
private:
double real;
double imag;

public:
Complex(double r = 0, double i = 0) {
real = r;
imag = i;
}
double modulus() {
double modulus;
modulus = sqrt(real *real + imag * imag);
return modulus;
}
bool friend operator>( Complex o,Complex p) {
double a = o.modulus();
double b = p.modulus();

if (a > b) {
return true;
}
else if (a <=b) {
return false;
}
}
};
int main() {
double a, b, c, d;

while(cin >> a >> b >> c >> d) {
if (a == 0 && b == 0 && c == 0 && d == 0)
break;

Complex p1(a, b);
Complex p2(c, d);
if (p1 > p2) {
cout << "true" << endl;
}
else {
cout << "false" << endl;

}
}
return 0;
}