-->
当前位置:首页 > 题库 > 正文内容

7-3 重载大于号运算符,比较复数大小 (3 分)

Luz4年前 (2021-03-08)题库3488
7-3 重载大于号运算符,比较复数大小 (3 分)

本题目要求编写代码的功能为: 输入两个复数(变量名自拟),比较复数模的大小,复数实部与虚部都是整数 要求输入时输入4个整数,分别代表复数1的实部、虚部,复数2的实部虚部

输入格式:

在同一行中输入4个整数,分别代表复数1的实部、虚部,复数2的实部虚部

输出格式:

输出比较两个复数模的大小的结果: 当复数1模大于复数2时 输出1 当复数1模小于复数2时 输出-1 当复数1模等于复数2时 输出0

输入样例:

例如:输入复数1为 12+34i,复数2为 58+59i 时格式如下

  1. 12 34 58 59

输出样例:

复数1模小于复数2的模,所以输出-1

  1. -1
作者
jolie
单位
佳木斯大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class A {
  5. public:
  6.     A(int x = 0, int y = 0) : x(x), y(y) {}
  7.     void show() const;
  8.     A operator+(A& a);
  9.     A operator-(A& a);
  10.     int operator>(A&a);
  11. private:
  12.     int x, y;
  13. };
  14. A A::operator+(A& a){
  15. int x1=x+a.x;
  16. int y1=y+a.y;
  17.     A b(x1,y1);
  18.     return b;
  19. }
  20. A A::operator-(A& a){
  21. int x1=x-a.x;
  22. int y1=y-a.y;
  23.     A b(x1,y1);
  24.     return b;
  25. }
  26. int A::operator>(A& a){
  27.     if(x*x+y*y>a.x*a.x+a.y*a.y){
  28.         return 1;
  29.     }
  30.     else if(x*x+y*y==a.x*a.x+a.y*a.y){
  31.         return 0;
  32.     }
  33.     else{
  34.         return -1;
  35.     }
  36. }
  37. void A::show() const {
  38.     cout << "(" << x << ", " << y << ")" << endl;
  39. }
  40.  
  41.  
  42. int main() {
  43.     int x,y;
  44.     cin>>x>>y;
  45.     A a1(x,y);
  46.     cin>>x>>y;
  47.     A a2(x,y);
  48.     cout<<(a1>a2);
  49.     return 0;
  50. }