第七周实验报告(三)设计complex模板

来源:互联网 发布:m1213nf扫描软件 编辑:程序博客网 时间:2024/05/16 02:00

/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生 

* All rights reserved.

* 文件名称:设计complex模板使实部和虚部的类型为定义对象时用的实际类型

*    者:        晁阳                      

* 完成日期:     2012    4         4  

* 号:       m1.0  

* 对任务及求解方法的描述部分

* 输入描述: 

* 问题描述: 

* 程序输出:

 * 程序头部的注释结束

*/

#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_sub (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_sub (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,c3,c4;      c3.real=c2.real;      c3.imag=c2.imag;      c.real=real*c3.real+imag*c3.imag;      c.imag=(-real*c3.imag)+imag*c3.real;        c4.real=c2.real*c2.real+c2.imag*c3.imag;      c.real=c.real/c4.real;      c.imag=c.imag/c4.real;      return c;  }    template <class numtype>    void Complex<numtype>::display( )     {      cout<<"("<<real<<","<<imag<<"i)"<<endl;  }  int main( )  {             Complex<int> c1(4.5,5.6),c2(9.8,-8.7),c3;        c3=c1.complex_add(c2);        cout<<"c1+c2=";       c3.display( );        Complex<double> c4(4.5,5.6),c5(9.8,-8.7),c6;        c6=c4.complex_sub (c5);        cout<<"c4-c5=";       c6.display( );         Complex<double> c7(4.5,5.6),c8(9.8,-8.7),c9;        c9=c7.complex_mul (c8);        cout<<"c7*c8=";       c9.display( );         Complex<double> c10(4.5,5.6),c11(9.8,-8.7),c12;        c12=c10.complex_div (c11);        cout<<"c10/c11=";       c12.display( );       system("PAUSE");      return 0;  }  


上机感言:通过模板,将功能相同,数据类型不同的函数通过一个函数进行处理,可以简化程序,给我们省了很多力气啊 , 感谢模板!