
C++程序设计:设计一个复数类,其抽象数据类型描述如下:
[问题描述]:设计一个复数类,其抽象数据类型描述如下。[复数抽象数据类型描述]:ADTcomplexisDate实部。虚部。OperationComplex构造函数输入:...
[问题描述]:设计一个复数类,其抽象数据类型描述如下。
[复数抽象数据类型描述]:
ADT complex is
Date
实部。
虚部。
Operation
Complex构造函数
输入:要初始化实部的值realval与虚部的值imgval。
动作:确定实部与虚部。
GetReal 获得实部
输入:无
前置条件:无
动作:获得复数的实部
输出:返回该复数的实部。
后置条件:无
GetImag 获得虚部
输入:无
前置条件:无
动作:获得复数的虚部
输出:返回该复数的虚部。
后置条件:无
Operate + 重载加法运算符,实现两个复数相加
输入:另一个所要相加复数对象
前置条件:无
动作:将两个复数的实部与虚部分别相加
输出:返回相加后的复数对象。
后置条件:无
Operate - 重载减法运算符,实现两个复数相减
输入:要减的复数对象
前置条件:无
动作:将两个复数的实部与虚部分别相减
输出:返回相减后的复数对象。
后置条件:无
Display 输出复数
输入:无
前置条件:无
动作:将复数的实部和虚部按一定格式输出
输出:无
后置条件:无
end ADT complex
[利用类模板加以实现,使实部、虚部可以为int或float或double]
头文件complex.h实现类声明代码如下:
在complex..cpp文件中实现complex类中成员函数,实现代码如下:
主程序代码如下:
[测试数据]
(1)Z1=0,Z2=0;
(2)Z1=4,Z2=3i;
(3)Z1=3+1.5i,Z2=8-1.5i;
(4)Z1=-4+3.4i,Z2=-6-8.1i;
(5)Z1=-5.4+1.2i,Z2=5.4+3.2i;
(6)Z1的共轭复数: 展开
[复数抽象数据类型描述]:
ADT complex is
Date
实部。
虚部。
Operation
Complex构造函数
输入:要初始化实部的值realval与虚部的值imgval。
动作:确定实部与虚部。
GetReal 获得实部
输入:无
前置条件:无
动作:获得复数的实部
输出:返回该复数的实部。
后置条件:无
GetImag 获得虚部
输入:无
前置条件:无
动作:获得复数的虚部
输出:返回该复数的虚部。
后置条件:无
Operate + 重载加法运算符,实现两个复数相加
输入:另一个所要相加复数对象
前置条件:无
动作:将两个复数的实部与虚部分别相加
输出:返回相加后的复数对象。
后置条件:无
Operate - 重载减法运算符,实现两个复数相减
输入:要减的复数对象
前置条件:无
动作:将两个复数的实部与虚部分别相减
输出:返回相减后的复数对象。
后置条件:无
Display 输出复数
输入:无
前置条件:无
动作:将复数的实部和虚部按一定格式输出
输出:无
后置条件:无
end ADT complex
[利用类模板加以实现,使实部、虚部可以为int或float或double]
头文件complex.h实现类声明代码如下:
在complex..cpp文件中实现complex类中成员函数,实现代码如下:
主程序代码如下:
[测试数据]
(1)Z1=0,Z2=0;
(2)Z1=4,Z2=3i;
(3)Z1=3+1.5i,Z2=8-1.5i;
(4)Z1=-4+3.4i,Z2=-6-8.1i;
(5)Z1=-5.4+1.2i,Z2=5.4+3.2i;
(6)Z1的共轭复数: 展开
1个回答
展开全部
[利用类模板加以实现,使实部、虚部可以为int或float或double]
头文件complex.h实现类声明代码如下:
#include<iostream.h>
template<class T>
class complex
{
private:
T realval,imgval;
public:
complex(){ realval=imgval=0;};
complex<T>(T real=0,T img=0){
realval=real;
imgval=img;
}
~complex(){};
T GetReal();
T GetImag();
complex<T> operator+(complex<T>& c);
complex<T> operator-(complex<T>& c);
friend ostream& operator<<(ostream& out,complex<T>& d);
friend istream& operator>>(istream& in,complex<T>& d);
};
在complex..cpp文件中实现complex类中成员函数,实现代码如下:
template<class T>
T complex<T>::GetReal(){
return realval;
}
template<class T>
T complex<T>::GetImag(){
return imgval;
}
template<class T>
complex<T> complex<T>::operator+(complex<T>& c){
realval+=c.realval;
imgval+=c.imgval;
return *this;
}
template<class T>
complex<T> complex<T>::operator-(complex<T>& c){
realval-=c.realval;
imgval-=c.imgval;
return *this;
}
template<class T>
ostream& operator<<(ostream&out,complex<T>& d) {
if(d.realval!=0&&d.imgval!=0){
out<<d.realval<<"+"<<d.imgval<<"i";
return out;
}
else if(d.realval!=0&&d.imgval==0){
out<<d.realval;
return out;
}
else if(d.realval==0&&d.imgval!=0){
out<<d.imgval<<"i";
return out;
}
else {
out<<0;
return out;
}
}
template<class T>
istream& operator>>(istream&in,complex<T>& d) {
in>>d.real>>d.imag;
return in;
}
主程序代码如下:
#include<iostream.h>
#include"complex.h"
void main(){
complex<int> com11(0,0),com12(0,0);
complex<int> com21(4,0),com22(0,3);
complex<double> com31(3,1.5),com32(8,-1.5);
complex<double> com41(-4,3.4),com42(-6,-8.1);
complex<double> com51(-5.4,1.2),com52(5.4,3.2);
//////////////////////////////////////////////////
cout<<"输入测试"<<endl;
cout<<com11<<" "<<com12<<endl;
cout<<com21<<" "<<com22<<endl;
cout<<com31<<" "<<com32<<endl;
cout<<com41<<" "<<com42<<endl;
cout<<com51<<" "<<com52<<endl;
cout<<"测试加法、减法"<<endl;
cout<<"("<<com31<<")+("<<com32<<")=";
cout<<(com31+com32)<<endl;
cout<<"("<<com41<<")-("<<com42<<")=";
cout<<com41-com42<<endl;
cout<<"测试提取实部虚部"<<endl;
cout<<com51<<":"<<com51.GetReal()<<"-----"<<com51.GetImag()<<endl;
cout<<com52<<":"<<com52.GetReal()<<"-----"<<com52.GetImag()<<endl;
cout<<"通过提取实部虚部求Z1的共轭复数"<<endl;
complex<int> z1(com11.GetImag(),com11.GetReal());
cout<<z1<<endl;
}
头文件complex.h实现类声明代码如下:
#include<iostream.h>
template<class T>
class complex
{
private:
T realval,imgval;
public:
complex(){ realval=imgval=0;};
complex<T>(T real=0,T img=0){
realval=real;
imgval=img;
}
~complex(){};
T GetReal();
T GetImag();
complex<T> operator+(complex<T>& c);
complex<T> operator-(complex<T>& c);
friend ostream& operator<<(ostream& out,complex<T>& d);
friend istream& operator>>(istream& in,complex<T>& d);
};
在complex..cpp文件中实现complex类中成员函数,实现代码如下:
template<class T>
T complex<T>::GetReal(){
return realval;
}
template<class T>
T complex<T>::GetImag(){
return imgval;
}
template<class T>
complex<T> complex<T>::operator+(complex<T>& c){
realval+=c.realval;
imgval+=c.imgval;
return *this;
}
template<class T>
complex<T> complex<T>::operator-(complex<T>& c){
realval-=c.realval;
imgval-=c.imgval;
return *this;
}
template<class T>
ostream& operator<<(ostream&out,complex<T>& d) {
if(d.realval!=0&&d.imgval!=0){
out<<d.realval<<"+"<<d.imgval<<"i";
return out;
}
else if(d.realval!=0&&d.imgval==0){
out<<d.realval;
return out;
}
else if(d.realval==0&&d.imgval!=0){
out<<d.imgval<<"i";
return out;
}
else {
out<<0;
return out;
}
}
template<class T>
istream& operator>>(istream&in,complex<T>& d) {
in>>d.real>>d.imag;
return in;
}
主程序代码如下:
#include<iostream.h>
#include"complex.h"
void main(){
complex<int> com11(0,0),com12(0,0);
complex<int> com21(4,0),com22(0,3);
complex<double> com31(3,1.5),com32(8,-1.5);
complex<double> com41(-4,3.4),com42(-6,-8.1);
complex<double> com51(-5.4,1.2),com52(5.4,3.2);
//////////////////////////////////////////////////
cout<<"输入测试"<<endl;
cout<<com11<<" "<<com12<<endl;
cout<<com21<<" "<<com22<<endl;
cout<<com31<<" "<<com32<<endl;
cout<<com41<<" "<<com42<<endl;
cout<<com51<<" "<<com52<<endl;
cout<<"测试加法、减法"<<endl;
cout<<"("<<com31<<")+("<<com32<<")=";
cout<<(com31+com32)<<endl;
cout<<"("<<com41<<")-("<<com42<<")=";
cout<<com41-com42<<endl;
cout<<"测试提取实部虚部"<<endl;
cout<<com51<<":"<<com51.GetReal()<<"-----"<<com51.GetImag()<<endl;
cout<<com52<<":"<<com52.GetReal()<<"-----"<<com52.GetImag()<<endl;
cout<<"通过提取实部虚部求Z1的共轭复数"<<endl;
complex<int> z1(com11.GetImag(),com11.GetReal());
cout<<z1<<endl;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询