求C++程序代码: 建立 一个复数类 Complex

求C++程序代码:建立一个复数类Complex,要求含两个成员:real,imaginary:float构造函数不带参数构造:0+0i以实部和虚部构造重载拷贝构造成员函数... 求C++程序代码:建立 一个复数类 Complex,要求
含两个成员:real,imaginary: float
构造函数
不带参数构造: 0+0i
以实部和虚部构造
重载拷贝构造
成员函数
输出这个复数
求模
求辐角
设置实部
设置虚部
求实部
求虚部类的使用
在main()中以四种方式构造不同对象
对每个对象,调用成员函数
展开
 我来答
匿名用户
2013-06-22
展开全部
#include<iostream>
#include<cmath>
using namespace std;
class Complex
{
public:
Complex();
Complex(float,float);
//Complex(Complex &Complex); //这个拷贝构造函数你下面没有定义 对象名不能与类名相同,改成小写
Complex(Complex &complex);
void put_real1(float); //获得复数的实部
void put_imaginary1(float); //获得复数的虚部 put应该是用于输出函数名的,严格来说应用Set_,你自己改吧
void out_real2(); //输出复数的实部 你的函数名都有同名的,编译器怎么区分?加个1和2
void out_imaginary2(); //输出复数的虚部
void out_size(); //输出复数的模
void out_view(); //输出复数的辐角
void out_it(); //输出这个复数
private:
float real,imaginary;
};Complex::Complex()
{
real=0;
imaginary=0;
}Complex::Complex(float a,float b)
{
//a=real;
//b=imaginary; 赋值错误,改为:
real=a;
imaginary=b;
}Complex::Complex(Complex &complex) //拷贝构造函数定义
{
real=complex.real;
imaginary=complex.imaginary;
}
/*void Complex::put_real()
{
cout<<"请输入复数的实部"<<endl;

cin>>real;}void Complex::put_imaginary(){
cout<<"请输入复数的虚部"<<endl;

cin>>imaginary;
}
void Complex::out_real()
{
cout<<"复数的实部为:"<<real<<endl;
} void Complex::out_imaginary()
{
cout<<"复数的虚部为:"<<imaginary<<endl;
}*/ //这4个函数跟下面的重复了,是多余的

void Complex::put_real1(float a)
{
//cout<<"请输入复数的实部"<<endl;
//cin>>a>>endl; // cin不需要换行符endl
real=a; //用户的输入可以放到主函数比较简单,这里只需要获得输入就行了
} void Complex::put_imaginary1(float b)
{
//cout<<"请输入复数的实部"<<endl;
//cin>>b>>endl; // cin不需要换行符endl
imaginary=b; //用户的输入可以放到主函数比较简单,这里只需要获得输入就行了
} //这两个成员函数跟你在类里声明的不一样,你声明的是无参的,定义就不能有参数,类里帮你改成有参数的了 void Complex::out_real2(){ //不需要参数,类里你声明的就是无参的
cout<<"复数的实部为:"<<real<<endl;
} void Complex::out_imaginary2() //不需要参数
{
cout<<"复数的虚部为:"<<imaginary<<endl;
}void Complex::out_size()
{ cout<<"该复数的模为:"<<sqrt(real*real+imaginary*imaginary)<<endl;
}void Complex::out_view()
{
cout<<"该复数的辐角为:"<<atan(real/imaginary)<<endl; //修改后的

}//void Complex::out_it(float a,float b) 这句也是一样,定义与声明不同
void Complex::out_it()
{
cout<<"复数="<<real<<"+"<<imaginary<<"i"<<endl;
} void main()
{
//float a=0,b=0; 不需要赋值
float a,b;
//Complex(); 没有对象
Complex Com1; //定义对象Com1的同时自动调用构造函数
cout<<"初始化的复数1为:";
Com1.out_it();
//Complex(float,float); 实参都没有,怎么传值给形参。实参不需要数据类型,只要一个具体的数
Complex Com2(1.0,2.0); //调用带参数的构造函数
cout<<"初始化的复数2为:";
Com2.out_it();
//Complex( &Complex); 你应该给一个具体的对象让它拷贝
Complex Com3(Com2); //拷贝对象Com2
cout<<"拷贝复数2的复数为:";
Com3.out_it();
//Complex Com;Complex
cout<<"请您输入一个复数的实部和虚部:"<<endl;
cin>>a>>b;
Complex Com4;
cout<<"您输入的复数信息如下:"<<endl;
Com4.put_real1(a); //取得复数的实部
Com4.put_imaginary1(b); //取得复数的虚部
Com4.out_real2(); //输出复数的实部
Com4.out_imaginary2(); //输出复数的虚部
Com4.out_size(); //输出复数的模
Com4.out_view(); //输出复数的辐角
Com4.out_it(); //输出这个复数
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-22
展开全部
#include "stdafx.h"
#include<iostream>
using namespace std;
class Complex4
{
private:
double real;
double imag;
public:
Complex4();//默认构造函数
Complex4(double r);//函数重载
Complex4(double r,double i);//函数重载
friend Complex4 operator +(Complex4 &c1,Complex4 &c2);//复数的加法函数
friend Complex4 operator -(Complex4 &c1,Complex4 &c2);//减法函数
Complex4 operator *(Complex4 &c1);//乘法函数
friend istream& operator >>(istream &output,Complex4 &c1);//输入函数的重载
friend ostream& operator <<(ostream& input,Complex4 &c1);//输出函数的重载
friend Complex4 operator -(Complex4 &c1);//复数负数函数
Complex4 operator -();
operator double(){return real;}//类型转换函数
Complex4 Qiumo();//求模函数
};
Complex4::Complex4()
{
real=0;
imag=0;
}//构造函数的实现
Complex4::Complex4(double r)
{
real=r;
imag=0;
}//类型转换函数
Complex4::Complex4(double r,double i)
{
real=r;
imag=i;
}//构造函数重载
Complex4 operator +(Complex4 &c1,Complex4 &c2)
{
Complex4 c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}//+符号的重载
Complex4 operator -(Complex4 &c1,Complex4 &c2)
{
Complex4 c;
c.real=c1.real-c2.real;
c.imag=c1.imag-c2.imag;
return c;
}//减号的重载函数
Complex4 Complex4::operator *(Complex4 &c1)
{
Complex4 c;
c.real=this->real*c1.real+this->imag*c1.imag;
c.imag=this->real*c1.imag+this->imag*c1.real;
return c;
}//乘法的函数重载
/*Complex4 operator -(Complex4 &c1)
{
Complex4 c;
c.real=-c.real;
c.imag=-c.imag;
return c;
}//负号的函数重载*/
Complex4 Complex4::operator -()
{
real=-(this->real);
imag=-(this->imag);
return *this;
}
istream& operator >>(istream &input,Complex4 &c1)
{
cout<<"input real part and image part of Complex4 number: ";
input>>c1.real>>c1.imag;
return input;
}//>>函数重载
ostream& operator <<(ostream& output,Complex4 &c)
{
output<<"("<<c.real;
if(c.imag>=0)output<<"+";
output<<c.imag<<"i)"<<endl;
return output;
}//<<函数重载
Complex4 Complex4::Qiumo()
{
double M;//表示模
M=sqrt(this->real*this->real+this->imag*this->imag);
return M;
}
int main()
{
Complex4 c1,c2,c3,c4,c5,c6;
double i,M;
cin>>c1>>c2;
c3=c1+c2;//实现复数的加法
c4=c1*c2;//实现复数的乘法
cout<<c1;
c1=c1.operator -();//实现复数取负数
i=2.5+c1;//类型的转换实现
c6=2.5+c1;
M=c1.Qiumo();
cout<<"c1="<<c1<<"c2="<<c2<<"c3="<<c3<<"c4="<<c4<<"c6="<<c6<<"i="<<i<<endl<<"M="<<M<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式