题目描述
编写一个复数类,能实现加、减运算,能输出复数的信息。
要求至少包含以下方法:
1、缺省(无参)构造函数,设置实部与虚部为1;
2、有参构造函数,给实部与虚部赋值;
3、加法运算,计算两个复数的和;
4、减法运算,计算两个复数的差;
5、输出方法,输出当前复数的值。
输入
测试数据的组数t
第一组的两个复数的实部 虚部 实部 虚部
第二组的两个复数的实部 虚部 实部 虚部…
输出
第一组两个复数的和
第一组两个复数的差…
样例输入
4
2 1
2 1
2 1
2 -1
3 1
2 -6
3 3
2 2
样例输出
sum:4+2i
remainder:0
sum:4
remainder:2i
sum:5-5i
remainder:1+7i
sum:5+5i
remainder:1+i
#include<iostream>
using namespace std;
class Complex //复数类
{
private:
int real,imaginary; //实部r,虚部i
public:
Complex() //缺省(无参)构造函数
{
real=1; //设置实部与虚部为1
imaginary=1;
}
Complex(int r,int im) //有参构造函数
{
real=r;
imaginary=im;
}
Complex add(const Complex &p) //加法运算,计算两个复数的和
{
Complex sum;
sum.real=real+p.real;
sum.imaginary=imaginary+p.imaginary;
return sum;
}
Complex sub(const Complex &p) //减法运算,计算两个复数的差
{
Complex remainder;
remainder.real=real-p.real;
remainder.imaginary=imaginary-p.imaginary;
return remainder;
}
void print() //输出方法,输出当前复数的值
{
if(real!=0)
{
cout << real;
if(imaginary>1) //x+yi
cout << "+" << imaginary << "i" << endl;
else if(imaginary==1) //x+i
cout << "+i" << endl;
else if(imaginary==0) //x
cout << endl;
else if(imaginary==-1) //x-i
cout << "-i" << endl;
else //x-yi
cout << imaginary << "i" << endl;
}
else
{
if(imaginary>1||imaginary<-1) //yi
cout << imaginary << "i" << endl;
else if(imaginary==1) //i
cout << "i" << endl;
else if(imaginary==-1) //-i
cout << "-i" << endl;
else //0
cout << "0" << endl;
}
}
};
int main()
{
int t,r,im;
Complex res; //存放结果
//printf("please input the number of test cases:\n");
cin >> t; //输入测试实例个数t
while(t--)
{
cin >> r >> im; //输入第一个复数的实部、虚部
Complex c1(r,im);
cin >> r >> im;
Complex c2(r,im); //输入第二个复数的实部、虚部
res=c1.add(c2); //加
cout << "sum:";
res.print();
res=c1.sub(c2); //减
cout << "remainder:";
res.print();
}
return 0;
}
//input 2 expect sum:1+i output sum:1+i
// 1 0 0 1 remainder:1-i remainder:1-i
// 2 1 2 0 sum:4+i sum:4+i
// remainder:i remainder:i