【C++对象和类】复数类

仅作为自己的学习记录,欢迎指正和建议
2.
Description
定义一个复数类complex,数据成员包括实部real和虚部imag,均为double类型。成员函数包括:

(1) 默认构造函数(即无参的构造函数),实部和虚部分别赋值为1.0,1.0 ;

(2) 带两个参数的构造函数;

(3) 输出复数的函数display, 输出格式为 实部+虚部i,例如: 1.00+1.00i ;

(4) 输入复数的函数input, 从键盘输入复数的实部和虚部;

(5) 计算复数的模的函数magnitude(函数返回值为double型),即对于复数 z=a+bi,它的模 |z|=sqrt(a2+b2)。

要求在main函数中创建3个复数对象,第1个复数的实部和虚部用input函数从键盘输入,第2、3个复数分别由用默认构造函数和带参数的构造函数实现初始化,最后分别输入这3个复数以及它们的模。

int main()

{

complex val1,val2,val3(1.5,2.8);

 val1.input();

val1.display();

cout<<"  "<<fixed<<setprecision(2)<<val1.magnitude()<<endl;

 val2.display();

cout<<"  "<<val2.magnitude()<<endl;

 val3.display();

cout<<"  "<<val3.magnitude()<<endl;

 return 0;  

}

Input
输入复数的实部和虚部,两个实数之间用空格分开

Output
3个复数应输出3行数据,每行输出数据分两部分,先输出复数,再输出该复数的模,复数和它的模之间用2个空格分隔,所有实数小数点后保留两位

Sample Input
1.0 2.0
Sample Output
1.00+2.00i 2.24
1.00+1.00i 1.41
1.50+2.80i 3.18
HINT
代码//

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
class complex
{
	public:
	complex();
	complex(double a,double b);
	void input();//输入
	void display();//输出
	double magnitude();//计算模长
	private:
	double real;
	double imag;
};
complex::complex() //默认
{
	real=1.0;
	imag=1.0;
}
complex::complex(double a,double b):real(a),imag(b){}//赋值
void complex::input()//输入
{
	double x,y;
	cin>>x>>y;
	real=x;
	imag=y;
}   
double complex::magnitude()//计算模长
{
	double i;
	i=sqrt(real*real+imag*imag);
	return i;
}
void complex::display()//输出复数
{
	if(real==0)
	{
		cout<<fixed<<setprecision(2)<<imag<<"i";
	}
	if(imag==0)
	{
		cout<<fixed<<setprecision(2)<<real;
	}
	if(imag<0)
	{
		cout<<fixed<<setprecision(2)<<real<<imag<<"i";
	}
	else
	{
		cout<<fixed<<setprecision(2)<<real<<"+"<<imag<<"i";
	}
}
int main()
{

    complex val1,val2,val3(1.5,2.8);

     val1.input();

    val1.display();

    cout<<"  "<<fixed<<setprecision(2)<<val1.magnitude()<<endl;

     val2.display();

    cout<<"  "<<val2.magnitude()<<endl;

     val3.display();

    cout<<"  "<<val3.magnitude()<<endl;

     return 0;  

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值