标签:c++ 生活
/*
*copyright(c) 2015,烟台大学计算机学院
*All rights reserved。
*文件名称:第六周(类模板)
*作者:王忠
*完成日期:2015.4.14
*版本号:v1.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_str(Complex &c2); Complex complex_mul(Complex &c2); Complex complex_div(Complex &c2); void display(); private: numtype real,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_str(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=imag*c2.real+real*c2.imag; return c; } template<class numtype> Complex<numtype> Complex<numtype>::complex_div(Complex &c2) { Complex c; numtype a; a=c2.real*c2.real+c2.imag*c2.imag; c.real=(real*c2.real+imag*c2.imag)/a; c.imag=(imag*c2.real-real*c2.imag)/a; 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; //实部和虚部是int型 c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; //实部和虚部是double型 c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); //下面测试减法、乘法和除法 c3=c1.complex_str(c2); cout<<"c1-c2="; c3.display( ); c3=c1.complex_mul(c2); cout<<"c1*c2="; c3.display( ); c3=c1.complex_div(c2); cout<<"c1/c2="; c3.display( ); return 0; }
当我模仿完乘除,运行出结果的时候,我才发现复数的乘除和加减不是一回事,把我给郁闷的,纠结啊
标签:c++ 生活
原文地址:http://blog.csdn.net/wangzhongwangmin/article/details/45061797