第六周(类模板)

/*

*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;
}

当我模仿完乘除,运行出结果的时候,我才发现复数的乘除和加减不是一回事,把我给郁闷的,纠结啊

时间: 2024-08-26 17:28:11

第六周(类模板)的相关文章

C++中的类模板详细讲述

一.类模板定义及实例化 1. 定义一个类模板: 1 template<class 模板参数表>2 3 class 类名{4 5 // 类定义......6 7 }: 其中,template 是声明类模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个,可以是类型参数 ,也可以是非类型参数.类型参数由关键字class或typename及其后面的标识符构成.非类型参数由一个普通参数构成,代表模板定义中的一个常量. 例: 1 template<class type,int widt

第十六周oj刷题——Problem C: B 求类中数据成员的最大值-类模板

Description 声明一个类模板,类模板中有三个相同类型的数据成员,有一函数来获取这三个数据成员的最大值. Input 分别输入3个整数,3个浮点数,3个字符 Output 3个整数的最大值 3个浮点数中的最大值 3个字符中的最大值 Sample Input 9 5 6 1.1 3.4 0.9 a b c Sample Output 9 3.40 c /* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 6 月 25 日

第十六周oj刷题——Problem K: 填空题:类模板---求数组的最大值

Description 类模板---求数组的最大值 找出一个数组中的元素的最大值,数组大小为10.(用类模板来实现) 数组元素类型作为类模板的参数. Input 10个int型数据 10个double型数据 10个char型数据 10gestring型数据 Output 10个int型数据的最大值 10个double型数据的最大值 10个char型数据的最大值 10个string型数据的最大值 Sample Input 1 3 5 7 9 8 6 4 2 0 1.2 3.4 5.66 7.8 9

第六周 项目六-复数模板类(1)(2)

阅读教材例10.1.该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的.可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型. (1)要求类成员函数在类外定义. (2)在此基础上,再实现减法.乘法和除法 你可以使用的main()函数如下. int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚部是int型 c3=c1.complex_add(c2); cout<

第六周项目六——复数模板类

可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型. (1)要求类成员函数在类外定义. (2)在此基础上,再实现减法.乘法和除法 你可以使用的main()函数如下. int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚部是int型 c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<dou

第六周 【项目6-复数模板类】

运行代码: <span style="font-size:18px;">/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *dood luck *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年4月15日 *版 本 号:v1.0 * */ //项目6-复数模板类] //该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的. //可以通过模板类的技术手段,设计C

17周 oj 比较大小 类模板

/*声明一个类模板,利用它分别实现两个整数. 浮点数和字符的比较,求出大数和小数. 说明:在类模板外定义各成员函数. 输入两个整数.两个浮点数和两个字符 从大到小输出两个整数.两个浮点数和两个字符 */ #include <iostream> #include <iomanip> using namespace std; template<class numtype> class Compare { public: Compare(numtype a,numtype b

17周 oj 比較大小 类模板

/*声明一个类模板,利用它分别实现两个整数. 浮点数和字符的比較,求出大数和小数. 说明:在类模板外定义各成员函数. 输入两个整数.两个浮点数和两个字符 从大到小输出两个整数.两个浮点数和两个字符 */ #include <iostream> #include <iomanip> using namespace std; template<class numtype> class Compare { public: Compare(numtype a,numtype b

第六周(友元类)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第六周(友元类) *作者:王忠 *完成日期:2015.4.14 *版本号:v1.0 * *问题描述:定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好) *输入描述: *程序输出: #include <iostream> using namespace std; class Date; //对D