M. 复数类 (Complex Number Class)

传统 1000 ms 256 MiB
标准 IO
文本比较

题目描述

请创建一个名为 Complex 的类,用于进行复数运算。复数具有如下形式: realPart+imaginaryPart×irealPart + imaginaryPart \times i 其中 ii 为虚数单位(i2=1i^2 = -1)。

你需要用 double 类型的变量来表示该类的私有(private)数据:realPart(实部)和 imaginaryPart(虚部)。

该类需要满足以下要求:

  1. 提供一个构造函数,使该类的对象在声明时得以初始化。构造函数应包含默认值(如 00),以防未提供初始化值的情况。
  2. 提供公开(public)成员函数执行以下任务:
    • 加法:两个 Complex 值相加。规则为实部与实部相加,虚部与虚部相加。即 (a+bi)+(c+di)=(a+c)+(b+d)i(a+bi) + (c+di) = (a+c) + (b+d)i
    • 减法:两个 Complex 值相减。规则为左操作数的实部减去右操作数的实部,左操作数的虚部减去右操作数的虚部。即 (a+bi)(c+di)=(ac)+(bd)i(a+bi) - (c+di) = (a-c) + (b-d)i
    • 打印:以 (a,b)(a, b) 的形式打印 Complex 值,其中 aa 为实部,bb 为虚部。

本题要求: 输入多组数据,每组数据包含两个复数的实部和虚部。对于每组数据,利用上述 Complex 类计算两个复数的和与差,并按格式输出。

输入格式

第一行包含一个整数 TT,表示测试数据的组数。 接下来的 TT 行,每行包含 4 个浮点数 r1,i1,r2,i2r_1, i_1, r_2, i_2,分别代表第一个复数的实部、虚部,以及第二个复数的实部、虚部。

输出格式

对于每组测试数据,输出一行,包含两个以 (a,b)(a, b) 格式表示的复数。 第一个表示两数之 ,第二个表示两数之 。 两个输出之间用一个空格隔开。

样例

样例输入

2
1.0 2.0 3.0 4.0
5.5 0.0 2.5 -1.5

样例输出

(4, 6) (-2, -2)
(8, -1.5) (3, 1.5)

数据范围与提示

  • 数据范围:1000.0r,i1000.0-1000.0 \le r, i \le 1000.0
  • T100T \le 100
  • 输出时直接使用 cout 输出 double 类型即可,无需强制保留小数位数,但必须符合 (a,b)(a, b) 的括号逗号格式。