c++程序设计题(复数类设计与实现)
3个回答
展开全部
好麻烦的
第一章 绪论
1-4.什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求
(1) 在复数内部用浮点数定义它的实部和虚部。
(2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。
(3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。
(4) 定义重载的流函数来输出一个复数。
【解答】
抽象数据类型通常是指由用户定义,用以表示应用问题的数据模型。抽象数据类型由基本的数据类型构成,并包括一组相关的服务。
//在头文件complex.h中定义的复数类
#ifndef _complex_h_
#define _complex_h_
#include <iostream.h>
class comlex {
public:
complex ( ){ Re = Im = 0; } //不带参数的构造函数
complex ( double r ) { Re = r; Im = 0; } //只置实部的构造函数
complex ( double r, double i ) { Re = r; Im = i; } //分别置实部、虚部的构造函数
double getReal ( ) { return Re; } //取复数实部
double getImag ( ) { return Im; } //取复数虚部
void setReal ( double r ) { Re = r; } //修改复数实部
void setImag ( double i ) { Im = i; } //修改复数虚部
complex & operator = ( complex & ob) { Re = ob.Re; Im = ob.Im; } //复数赋值
complex & operator + ( complex & ob ); //重载函数:复数四则运算
complex & operator – ( complex & ob );
complex & operator * ( complex & ob );
complex & operator / ( complex & ob );
friend ostream & operator << ( ostream & os, complex & c ); //友元函数:重载<<
private:
double Re, Im; //复数的实部与虚部
};
#endif
//复数类complex的相关服务的实现放在C++源文件complex.cpp中
#include <iostream.h>
#include <math.h>
#include “complex.h”
complex & complex :: operator + ( complex & ob ) {
//重载函数:复数加法运算。
complex * result = new complex ( Re + ob.Re, Im + ob.Im );
return *result;
}
complex & complex :: operator – ( complex & ob ) {
//重载函数:复数减法运算
complex *result = new complex ( Re – ob.Re, Im – ob.Im );
return * result;
}
complex & complex :: operator * ( complex & ob ) {
//重载函数:复数乘法运算
complex *result =
new complex ( Re * ob.Re – Im * ob.Im, Im * ob.Re + Re * ob.Im );
return *result;
}
complex & complex :: operator / ( complex & ) {
//重载函数:复数除法运算
double d = ob.Re * ob.Re + ob.Im * ob.Im;
complex * result = new complex ( ( Re * ob.Re + Im * ob.Im ) / d,
( Im * ob. Re – Re * ob.Im ) / d );
return * result;
}
friend ostream & operator << ( ostream & os, complex & ob ) {
//友元函数:重载<<,将复数ob输出到输出流对象os中。
return os << ob.Re << ( ob.Im >= 0.0 ) ? “+” : “-” << fabs ( ob.Im ) << “i”;
}
第一章 绪论
1-4.什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求
(1) 在复数内部用浮点数定义它的实部和虚部。
(2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。
(3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。
(4) 定义重载的流函数来输出一个复数。
【解答】
抽象数据类型通常是指由用户定义,用以表示应用问题的数据模型。抽象数据类型由基本的数据类型构成,并包括一组相关的服务。
//在头文件complex.h中定义的复数类
#ifndef _complex_h_
#define _complex_h_
#include <iostream.h>
class comlex {
public:
complex ( ){ Re = Im = 0; } //不带参数的构造函数
complex ( double r ) { Re = r; Im = 0; } //只置实部的构造函数
complex ( double r, double i ) { Re = r; Im = i; } //分别置实部、虚部的构造函数
double getReal ( ) { return Re; } //取复数实部
double getImag ( ) { return Im; } //取复数虚部
void setReal ( double r ) { Re = r; } //修改复数实部
void setImag ( double i ) { Im = i; } //修改复数虚部
complex & operator = ( complex & ob) { Re = ob.Re; Im = ob.Im; } //复数赋值
complex & operator + ( complex & ob ); //重载函数:复数四则运算
complex & operator – ( complex & ob );
complex & operator * ( complex & ob );
complex & operator / ( complex & ob );
friend ostream & operator << ( ostream & os, complex & c ); //友元函数:重载<<
private:
double Re, Im; //复数的实部与虚部
};
#endif
//复数类complex的相关服务的实现放在C++源文件complex.cpp中
#include <iostream.h>
#include <math.h>
#include “complex.h”
complex & complex :: operator + ( complex & ob ) {
//重载函数:复数加法运算。
complex * result = new complex ( Re + ob.Re, Im + ob.Im );
return *result;
}
complex & complex :: operator – ( complex & ob ) {
//重载函数:复数减法运算
complex *result = new complex ( Re – ob.Re, Im – ob.Im );
return * result;
}
complex & complex :: operator * ( complex & ob ) {
//重载函数:复数乘法运算
complex *result =
new complex ( Re * ob.Re – Im * ob.Im, Im * ob.Re + Re * ob.Im );
return *result;
}
complex & complex :: operator / ( complex & ) {
//重载函数:复数除法运算
double d = ob.Re * ob.Re + ob.Im * ob.Im;
complex * result = new complex ( ( Re * ob.Re + Im * ob.Im ) / d,
( Im * ob. Re – Re * ob.Im ) / d );
return * result;
}
friend ostream & operator << ( ostream & os, complex & ob ) {
//友元函数:重载<<,将复数ob输出到输出流对象os中。
return os << ob.Re << ( ob.Im >= 0.0 ) ? “+” : “-” << fabs ( ob.Im ) << “i”;
}
展开全部
人家C++里面已经有提供复数类型啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
class Complex
{
public:
Complex()
{ real=imag=0; }
Complex(double r)
{ real=r;imag=0; }
Complex(double r,double i)
{ real=r;imag=i; }
Complex operator +(const Complex &c);
Complex operator -(const Complex &c);
Complex operator *(const Complex &c);
Complex operator /(const Complex &c);
friend void Print(const Complex &c);
private:
double real,imag;
};
Complex Complex::operator +(const Complex &c)
{
return Complex(real+c.real,imag+c.imag);
}
Complex Complex::operator -(const Complex &c)
{
return Complex(real-c.real,imag-c.imag);
}
Complex Complex::operator *(const Complex &c)
{
return Complex(real*c.real-imag*c.imag,real*c.imag+imag*c.real);
}
Complex Complex::operator /(const Complex &c)
{
return Complex((real*c.real+imag*c.imag)/(c.real*c.real+c.imag*c.imag),
(imag*c.real-real*c.imag)/(c.real*c.real+c.imag*c.imag));
}
void Print(const Complex &c)
{
if(c.imag<0)
cout<<c.real<<c.imag<<'i'<<endl;
else
cout<<c.real<<'+'<<c.imag<<'i'<<endl;
}
void main()
{
Complex c1(2.5),c2(5.5,-1.0),c3;
c3=c1+c2;
cout<<"c1+c2=";
Print(c3);
c3=c1-c2;
cout<<"c1-c2=";
Print(c3);
c3=c1*c2;
cout<<"c1*c2=";
Print(c3);
c3=c1/c2;
cout<<"c1/c2=";
Print(c3);
}
class Complex
{
public:
Complex()
{ real=imag=0; }
Complex(double r)
{ real=r;imag=0; }
Complex(double r,double i)
{ real=r;imag=i; }
Complex operator +(const Complex &c);
Complex operator -(const Complex &c);
Complex operator *(const Complex &c);
Complex operator /(const Complex &c);
friend void Print(const Complex &c);
private:
double real,imag;
};
Complex Complex::operator +(const Complex &c)
{
return Complex(real+c.real,imag+c.imag);
}
Complex Complex::operator -(const Complex &c)
{
return Complex(real-c.real,imag-c.imag);
}
Complex Complex::operator *(const Complex &c)
{
return Complex(real*c.real-imag*c.imag,real*c.imag+imag*c.real);
}
Complex Complex::operator /(const Complex &c)
{
return Complex((real*c.real+imag*c.imag)/(c.real*c.real+c.imag*c.imag),
(imag*c.real-real*c.imag)/(c.real*c.real+c.imag*c.imag));
}
void Print(const Complex &c)
{
if(c.imag<0)
cout<<c.real<<c.imag<<'i'<<endl;
else
cout<<c.real<<'+'<<c.imag<<'i'<<endl;
}
void main()
{
Complex c1(2.5),c2(5.5,-1.0),c3;
c3=c1+c2;
cout<<"c1+c2=";
Print(c3);
c3=c1-c2;
cout<<"c1-c2=";
Print(c3);
c3=c1*c2;
cout<<"c1*c2=";
Print(c3);
c3=c1/c2;
cout<<"c1/c2=";
Print(c3);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询