Complex(类与对象+构造)

题目描述

编写一个复数类,能实现加、减运算,能输出复数的信息。
要求至少包含以下方法:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值