第7周实验报告任务3

来源:互联网 发布:seo如何快速k掉网站 编辑:程序博客网 时间:2024/06/10 21:54
/* (程序头部注释开始)  * 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生   * All rights reserved.* 文件名称:复数* 作 者: 郭岩岩 * 完成日期:2012 年4月 2日 * 版 本 号: vc.1 * 对任务及求解方法的描述部分 * 输入描述:  * 问题描述:  * 程序输出:  *程序头部的注释结束 */  #include <iostream>using namespace std;template<class numtype> class Complex   {public:Complex( ){numtype real=0;numtype imag=0;}     Complex(numtype r,numtype i){real=r;imag=i;} Complex complex_add(const Complex<numtype> &c2);Complex Complex_reduce(const Complex<numtype> &c2);    Complex Complex_multiplication(const Complex<numtype> &c2);    Complex Complex_division(const Complex<numtype> &c2);void display( );   private:numtype  real; numtype imag; };template<class numtype> Complex<numtype> Complex<numtype>::complex_add(const Complex<numtype> &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;}template<class numtype>Complex<numtype> Complex<numtype>::Complex_reduce(const Complex<numtype> &c2){   Complex<numtype> c;   c.real=real-c2.real;c.imag=imag-c2.imag;return c;}template<class numtype>Complex<numtype> Complex<numtype>::Complex_multiplication(const Complex<numtype> &c2){Complex<numtype> 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_division(const Complex<numtype> &c2){Complex<numtype> c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;}int main( ){Complex<int> c1(-12,16),c2(5,-10),c3;  c3=c1.complex_add(c2);  cout<<"c1+c2="; c3.display( );c3=c1.Complex_reduce(c2);cout<<"c1-c2=";c3.display();    c3=c1.Complex_multiplication(c2);cout<<"c1*c2=";c3.display();    c3=c1.Complex_division(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( );c6=c4.Complex_reduce(c5);cout<<"c4-c5=";c6.display();    c6=c4.Complex_multiplication(c5);cout<<"c4*c5=";c6.display();    c6=c4.Complex_division(c5);cout<<"c4/c5=";c6.display();system("pause");return 0;}


上机感言:大笑

经验积累:如果类模板中的成员函数是在类中定义的写成numtype Complex complex_add(const Complex<numtype> &c2)

                  而在类外应写成template<class numtype>
                  Complex<numtype> Complex<numtype>::complex_add(const Complex<numtype> &c2)