题目描述:建立一个复数类,实数和虚数是其私有数据成员。建立一个>(大于号)的运算符重载,比较两个复数间模的大小。
输入格式:测试输入包含若干测试用例,每个测试用例占一行。每个测试用例包括四个数字,前两个数字分别表示第一个复数的实部和虚部,第三个和第四个数字分别表示第二个复数的实部和虚部。每个数字之间用空格间隔。当读入一个测试用例是0 0 0 0时输入结束,相应的结果不要输出。
输出格式:对每个测试用例输出一行。当第一个复数的模大于第二个复数的模时,输出 true ,当第一个复数的模小于或等于第二个复数的模时,输出false
输入样例:
3 5 4 0
0 3 4 1
0 0 0 0
输出样例:
true
false
#include <iostream>
using namespace std;
class Complex {
private:
double real;
double imag;
public:
Complex() {
}
void set(double r, double m) {
real = r;
imag = m;
}
friend bool operator>(Complex, Complex);
};
bool operator>(Complex c1, Complex c2) {
return (c1.real * c1.real + c1.imag * c1.imag) > (c2.real * c2.real + c2.imag * c2.imag);
}
int main() {
double a, b, c, d;
Complex c1, c2;
cin >> a >> b >> c >> d;
do {
c1.set(a, b);
c2.set(c, d);
cout << ((c1 > c2) ? "true" : "false") << endl;
cin >> a >> b >> c >> d;
} while (!(a == 0 && b == 0 && c == 0 && d == 0));
}