C++第七周【任务3】扩展版:设计Complex,使实部和虚部的类型为定义对象时用的实际类型。

来源:互联网 发布:http协议java 编辑:程序博客网 时间:2024/06/06 22:32
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: C++第七周任务3                             * 作    者: 李洪悬                             * 完成日期:   2012      年   4    月   3     日* 版 本 号:          * 对任务及求解方法的描述部分* 输入描述: 输入点的坐标* 问题描述:设计Complex,使实部和虚部的类型为定义对象时用的实际类型。 * 程序输出: 求点的坐标的和* 程序头部的注释结束*/【任务3】阅读P314的例10.1(电子版的在平台上见txt文件)。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型。(1)要求类成员函数在类外定义。(2)在此基础上,再实现减法、乘法和除法你可以使用的main()函数如下。int main( ){Complex<int> c1(3,4),c2(5,-10),c3;  c3=c1.complex_add(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( ); system("pause");return 0;}//源代码如下
#include <iostream>   using namespace std;  template <class numtype>  class Complex     {  public:      Complex( )      {          real=0;          imag=0;      }           Complex(double r,double 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<numtype> 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<numtype> 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<numtype> c;      c.real=real*c2.real;    c.imag=imag*c2.imag;      return c;  }    template <class numtype>  Complex<numtype> Complex<numtype>::complex_div(Complex &c2)  {      Complex<numtype> c;      c.real=real/c2.real;    c.imag=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( );     Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;     c6=c4.complex_add(c5);        cout<<"c4+c5=";     c6.display( );Complex<double> c66(3.1,4.4),c7(5.34,-10.21),c8;     c8=c66.complex_sub(c7);        cout<<"c66-c7=";     c8.display( );Complex<int> c9(3,4),c10(5,-10),c11;     c11=c9.complex_mul(c10);        cout<<"c9*c10=";     c11.display( );Complex<double> c12(3.1,4.4),c13(5.34,-10.21),c14;     c14=c12.complex_div(c13);        cout<<"c12/c13=";     c14.display( );system("pause");    return 0;  } 

经验积累:照猫画虎!但也要细心!因为我马虎画错了,例如我把对象名写重啦!又改为C66!偷懒呗!

原创粉丝点击