C++类的建立与应用
明天要交报告,但是书看不懂,网上又没有,希望高手救救二、内容使用VisualStudio.net2003建立一个复数类,并编制主程序来验证对所创建的复数类的操作的正确性。...
明天要交报告,但是书看不懂,网上又没有,希望高手救救
二、内容
使用Visual Studio.net 2003建立一个复数类,并编制主程序来验证对所创建的复数类的操作的正确性。
三、要求
1、有两个私有的成员x和y;
2、分别有一个带参数构造函数和无参数构造函数;
3、定义一个可以显示复数的实部和虚部的成员函数。 展开
二、内容
使用Visual Studio.net 2003建立一个复数类,并编制主程序来验证对所创建的复数类的操作的正确性。
三、要求
1、有两个私有的成员x和y;
2、分别有一个带参数构造函数和无参数构造函数;
3、定义一个可以显示复数的实部和虚部的成员函数。 展开
1个回答
展开全部
#include <iostream>
#include <cmath>
using namespace std;
class Complex{
private:
double Real,Image;
public:
Complex (double r=0.0,double i=0.0){Real=r;Image=i;}
Complex(Complex &com){
Real=com.Real;
Image=com.Image;
}
void Print(){
cout<<"Real="<<Real<<'\t'<<"Image="<<Image<<endl;
}
Complex operator+(Complex);
Complex operator+(double);
Complex operator=(Complex);
Complex operator+=(Complex);
double abs(void);
Complex operator*(Complex);
Complex operator/(Complex);
};
Complex Complex::operator +(Complex c){
Complex temp(Real+c.Real,Image+c.Image);
return temp;
}
Complex Complex:: operator+(double d){
return Complex(Real+d,Image);
}
Complex Complex::operator =(Complex c){
Complex temp;
temp.Real=c.Real;
temp.Image=c.Image;
Real=temp.Real;
Image=temp.Image;
return temp;
}
Complex Complex::operator+=(Complex c){
Complex temp;
temp.Real=Real+c.Real;
temp.Image=Image+c.Image;
Real=temp.Real;
Image=temp.Image;
return temp;
}
double Complex::abs(void){
return sqrt(Real*Real+Image*Image);
}
Complex Complex::operator*(Complex c){
return Complex(Real*c.Real -Image*c.Image,Real*c.Image+c.Real *Image);
}
Complex Complex::operator/(Complex c){
double d=c.Real*c.Real+c.Image*c.Image;
return Complex((Real*c.Real+Image*c.Image)/d,(Image*c.Image-Real*c.Real)/d);
}
int main(){
Complex c1(1.0,1.0),c2(2.0,2.0),c3(4.0,4.0),c;
c1.Print();
double d=0.5;
c=c2+c3;c.Print();
c+=c1;c.Print();
c=c+d;c.Print();
c=c2*c3;c.Print();
c=c3/c1;c.Print();
cout<<"c3的模为:"<<c3.abs()<<endl;
c=c3=c2=c1;c.Print();
c+=c2+=c1;c.Print();
return 0;
}
第二个版本:
#include <iostream.h>
class complex
{
public:
complex(){real=imag=0;} //默认构造函数
complex(double r,double i) //构造函数重载
{real=r;imag=i;}
complex operator+(const complex &c); //复数类+运算符重载
complex operator-(const complex &c); //复数类-运算符重载
friend void print(const complex &c); //打印复数方法
private:
double real,imag; //私有类成员,分别代表实数部分和虚数部分
};
inline complex complex :: operator+(const complex &c) //复数类+运算符重载实现
{return complex (real+c.real,imag+c.imag);}
inline complex complex :: operator-(const complex &c) //复数类-运算符重载实现
{return complex (real-c.real,imag-c.imag);};
void print(const complex &c) //打印复数方法实现
{
if(c.imag<0)
cout<<c.real<<c.imag<<'i';
else
cout<<c.real<<'+'<<c.imag<<'i';
}
void main()
{
complex c1(2.0,3.0),c2(4.0,-5.0),c3; //C1,C2由构造函数的参数决定了使用complex(double r,double i)这个构造函数,C3使用默认构造函数
c3=c1+c2; //这里的加法使用了重载了的+运算符
cout<<"\nc1+c2=";
print(c3);
c3=c1-c2; //这里的减法使用了重载了的-法运算符
cout<<"\nc1-c2=";
print(c3);
cout<<endl;
}
#include <cmath>
using namespace std;
class Complex{
private:
double Real,Image;
public:
Complex (double r=0.0,double i=0.0){Real=r;Image=i;}
Complex(Complex &com){
Real=com.Real;
Image=com.Image;
}
void Print(){
cout<<"Real="<<Real<<'\t'<<"Image="<<Image<<endl;
}
Complex operator+(Complex);
Complex operator+(double);
Complex operator=(Complex);
Complex operator+=(Complex);
double abs(void);
Complex operator*(Complex);
Complex operator/(Complex);
};
Complex Complex::operator +(Complex c){
Complex temp(Real+c.Real,Image+c.Image);
return temp;
}
Complex Complex:: operator+(double d){
return Complex(Real+d,Image);
}
Complex Complex::operator =(Complex c){
Complex temp;
temp.Real=c.Real;
temp.Image=c.Image;
Real=temp.Real;
Image=temp.Image;
return temp;
}
Complex Complex::operator+=(Complex c){
Complex temp;
temp.Real=Real+c.Real;
temp.Image=Image+c.Image;
Real=temp.Real;
Image=temp.Image;
return temp;
}
double Complex::abs(void){
return sqrt(Real*Real+Image*Image);
}
Complex Complex::operator*(Complex c){
return Complex(Real*c.Real -Image*c.Image,Real*c.Image+c.Real *Image);
}
Complex Complex::operator/(Complex c){
double d=c.Real*c.Real+c.Image*c.Image;
return Complex((Real*c.Real+Image*c.Image)/d,(Image*c.Image-Real*c.Real)/d);
}
int main(){
Complex c1(1.0,1.0),c2(2.0,2.0),c3(4.0,4.0),c;
c1.Print();
double d=0.5;
c=c2+c3;c.Print();
c+=c1;c.Print();
c=c+d;c.Print();
c=c2*c3;c.Print();
c=c3/c1;c.Print();
cout<<"c3的模为:"<<c3.abs()<<endl;
c=c3=c2=c1;c.Print();
c+=c2+=c1;c.Print();
return 0;
}
第二个版本:
#include <iostream.h>
class complex
{
public:
complex(){real=imag=0;} //默认构造函数
complex(double r,double i) //构造函数重载
{real=r;imag=i;}
complex operator+(const complex &c); //复数类+运算符重载
complex operator-(const complex &c); //复数类-运算符重载
friend void print(const complex &c); //打印复数方法
private:
double real,imag; //私有类成员,分别代表实数部分和虚数部分
};
inline complex complex :: operator+(const complex &c) //复数类+运算符重载实现
{return complex (real+c.real,imag+c.imag);}
inline complex complex :: operator-(const complex &c) //复数类-运算符重载实现
{return complex (real-c.real,imag-c.imag);};
void print(const complex &c) //打印复数方法实现
{
if(c.imag<0)
cout<<c.real<<c.imag<<'i';
else
cout<<c.real<<'+'<<c.imag<<'i';
}
void main()
{
complex c1(2.0,3.0),c2(4.0,-5.0),c3; //C1,C2由构造函数的参数决定了使用complex(double r,double i)这个构造函数,C3使用默认构造函数
c3=c1+c2; //这里的加法使用了重载了的+运算符
cout<<"\nc1+c2=";
print(c3);
c3=c1-c2; //这里的减法使用了重载了的-法运算符
cout<<"\nc1-c2=";
print(c3);
cout<<endl;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询