//【任务3】阅读P314的例10.1(电子版的在平台上见txt文件)。该例实现了一个复数类,但是美中不足的是,
//复数类的实部和虚部都固定是double型的。可以通过模板类的技术手段,设计Complex,
//使实部和虚部的类型为定义对象时用的实际类型。
//(1)要求类成员函数在类外定义。
//(2)在此基础上,再实现减法、乘法和除法
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: Complex.cpp
* 作 者: 计114-3 王兴锋
* 完成日期: 2012 年 4 月 2 日
* 版 本 号: V 1.0
* 对任务及求解方法的描述部分
* 输入描述:通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型
* 问题描述:(1)要求类成员函数在类外定义。
(2)在此基础上,再实现减法、乘法和除法
* 程序输出:对虚数运算的结果
* 程序头部的注释结束
*/
#include <iostream>
using namespace std;
template <class numtype>
class Complex
{
public:
Complex( ){real = 0; imag = 0;}
Complex(numtype r, numtype i){real = r; imag = i;}
Complex complex_add(Complex &c2);
Complex complex_cut(Complex &c2);
Complex complex_mul(Complex &c2);
Complex complex_div(Complex &c2);
void display( );
private:
numtype real;
numtype imag;
};
template <class numtype>
Complex<numtype> Complex<numtype>::complex_add(Complex &c2)//模板类(类名 <>)
{
Complex c;
c.real = real + c2.real;
c.imag = imag + c2.imag;
return c;
}
template <class numtype>
Complex<numtype> Complex<numtype>::complex_cut(Complex &c2)//模板类(类名 <>)
{
Complex c;
c.real = real - c2.real;
c.imag = imag - c2.imag;
return c;
}
template <class numtype>
Complex<numtype> Complex<numtype>::complex_mul(Complex &c2)//模板类(类名 <>)
{
Complex c;
c.real = real*c2.real - imag*c2.imag;
c.imag = real*c2.imag + imag*c2.real;
return c;
}
template <class numtype>
Complex<numtype> Complex<numtype>::complex_div(Complex &c2)//模板类(类名 <>)
{
Complex c;
c.real = (real*c2.real + imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
c.imag = (-real*c2.imag + imag*c2.real)/(c2.real*c2.real+c2.imag*c2.imag);
return c;
}
template <class numtype>
void Complex<numtype>::display( )
{
cout << "(" << real << "," << imag << "i)" << endl;
}
int main( )
{
Complex<int> c1(3, 4), c2(5, -10), c3;
c3 = c1.complex_add(c2);
cout << "c1+c2=";
c3.display( );
c3 = c1.complex_cut(c2);
cout << "c1-c2=";
c3.display( );
Complex<double> c4(3.1, 4.4), c5(5.34, -10.21), c6;
c6=c4.complex_add(c5);
cout << "c4+c5=";
c6.display( );
Complex<int> c7(3, 4), c8(5, -10), c9;
c9 = c7.complex_mul(c8);
cout << "c7×c8=";
c9.display( );
Complex<double> c10(3.1, 4.4), c11(5.34, -10.21), c12;
c12=c10.complex_div(c11);
cout << "c10÷ c11=";
c12.display( );
system("pause");
return 0;
}
/*
利用模板进行函数及类的处理还是不够熟练,
还请教了一下马同学,看来得好好跟人家马同学学习学习了。
*/
分享到:
相关推荐
定义一个名为 的复数类,其属性数据为复数的实部和虚部,要求构造函数和拷贝构造函数,并能打印复数的值
用C++定义的一个复数类,能实现实部和虚部的加减法
ComplexNumber(double r, double i):构造函数,将实部和虚部分别置为r和i。getRealPart( ):获取复数对象的实部。 getImaginaryPart( ):获取复数对象的虚部。 setRealPart(double d): 把复数对象的实部设置为d。 ...
定义一个复数类 complex ,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚 部,编程实现要求的数学运算。 (1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。 (2...
快速傅里叶变换,实部,虚部,倾角,反傅里叶变换,的源代码。
复数由实部、虚部两个部分组成,在类的定义中应包含保存这两部分信息的内容。 2. 在类中定义构造函数,使用户能够在构造对象的同时为对象赋初值。 3. 在类中定义复数的加法、减法、乘法三个成员方法来完成复数...
不同阻尼比情况下,频率响应函数实部、虚部和模值随外激励频率变化曲线
1、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。 2、用类来描述游戏...
1复数四则运算〖问题描述〗设计一个可进行复数运算的演示程序,实现下列六种基本运算:l)由输入的实部和虚部生成一个复数,2)两个复数求和;3)两个复数求差;4)两个复数求积;5)从已知复数中分离出实部;从已知...
卷积前后实部虚部分析并出图,可直接出图,程序能含详细注释,便于读者修改
主要对信号进行FFT变换,实部虚部及功率谱,并提取45Hz的信号
用c++设计一个Complex复数类,重载运算符“+”、“-”,并设计测试程序。
2.定义一复数类CComplex(类中含有实部real和虚部imag私有成员变量,都为double类型),重载输入运算符>>和输出运算符,使得该类可以直接通过输入输出运算符进行输入输出操作。 3.有一名为test.txt的文件,里面分...
提供成员函数disp()显示复数(格式:-3+5i或6-2i),重载“+”、“-”为FS类的成员函数,用来计算两个复数的和、差。 思路导航: ① 定义类,设计构造函数和显示函数print(); ② 重载运算符“+”、“-”为类FS的成员...
实现下列六种基本运算:1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积;5)从已知复数中分离出实部;6)从已知复数中分离出虚部。运算结果以相应的复数或实数的表示形式...
System.out.println("请输入第一个复数的实部:"); Double x1 = reader.nextDouble(); System.out.println("请输入第一个复数的虚部:"); Double y1 = reader.nextDouble(); System.out.println("请输入第...
1. 自定义一个示意性的复数类型complex,其中含有若干个成员函数。请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。 class complex{ double real; //复数实部 double imag; ...
开课实验室:现代信息交流中心403 开课时间: 2019年**月**日 实验报告: 2019年 11月 2日 "学院 "信息工程学"年级、 "软件工程1803班 "学号 "20180822 " "名称 "院 "专业、 " " " " " " "班 " " " " "实验类型 "验证 ...