第七周项目5-复数类模板

/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2014  年 4 月 8 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述:无
*问题描述:复数类模板
          (1)要求类成员函数在类外定义。
        (2)在此基础上,再实现减法、乘法和除法

*程序输出:- -
*问题分析:
*算法设计:
*/
#include<iostream>
using namespace std;
template<class A>  //声明类模板A
class Complex
{
	public:
		Complex(){a=0;b=0;}
		Complex(A x,A y){a=x;b=y;}
		Complex complex_add(Complex&);//成员函数,返回类型为Complex
		Complex complex_dec(Complex&);
		Complex complex_mul(Complex&);
		Complex complex_div(Complex&);
		void display();
	private:
		A a,b;
};
int main()
{
    Complex<int> c1(3,4),c2(5,-10),c3;   //实部和虚部是int型
    c3=c1.complex_add(c2);
    cout<<"c1+c2=";
    c3.display();
    c3=c1.complex_dec(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();
    Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; //实部和虚部是double型
    c6=c4.complex_add(c5);
    cout<<"c4+c5=";
    c6.display();
    //下面测试减法、乘法和除法
	 c6=c4.complex_dec(c5);  
     cout<<"c4-c5=";
     c6.display();
     c6=c4.complex_mul(c5);  
     cout<<"c4*c5=";
     c6.display();
	 c6=c4.complex_div(c5);  
     cout<<"c4/c5=";
     c6.display();
    return 0;
}
template<class A>
Complex<A> Complex<A>::complex_add(Complex<A> &c2)     
{  //成员函数的类外定义。
	Complex<A> c;      
	c.a=a+c2.a;  
	c.b=b+c2.b;  
	return c;  
}  
template<class A>     
Complex<A> Complex<A>::complex_dec(Complex<A> &c2)     
{  
	Complex<A> c;      
	c.a=a-c2.a;  
	c.b=b-c2.b;  
	return c;  
}  
template <class A>      
Complex<A> Complex<A>::complex_mul(Complex <A> &c2)        
{      
      Complex <A> c;      
      c.a=a*c2.a-b*c2.b;      
      c.b=b*c2.a+a*c2.b;      
      return c;      
}    
template <class A>      
Complex<A> Complex<A>::complex_div(Complex <A> &c2)        
{      
      Complex <A> c;      
      A d=c2.a*c2.a+c2.b*c2.b;
      c.a=(a*c2.a+b*c2.b)/d;       
      c.b=(b*c2.a-a*c2.b)/d;      
      return c;      
}  
template <class A> 
void Complex<A>::display( )     
{  
      cout<<a<<"+"<<b<<"i"<<endl;  
}

运行结果:

心得体会:真麻烦。两节课进去了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值