第六周(类模板)
来源:互联网 发布:广州火舞软件 编辑:程序博客网 时间:2024/05/01 07:03
/*
*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;}
当我模仿完乘除,运行出结果的时候,我才发现复数的乘除和加减不是一回事,把我给郁闷的,纠结啊
0 0
- 第六周(类模板)
- 第六周项目六 复制模板类(复数类)
- 第六周项目六:复数模板类(1)
- 第六周项目六:复数模板类(2)
- 第六周——复数模板类(二)
- 第六周项目六 复数模板类(3)
- 第六周 项目六(1):复数模板类
- 第六周 项目六(3):复数模板类
- 第六周 项目六--复数模板类(1)
- 第六周 项目六--复数模板类(3)
- 第六周项目六复数模板类(1)
- 第六周 项目6-复数模板类(1)
- 第六周 【项目6-复数模板类】(3)
- 第六周项目六复数类模板(2)
- 第六周项目六复数模板类(3)
- 第六周 项目6-复数模板类(2)
- 第六周 项目6-复数模板类(3)
- 第六周 项目六-复数模板类(3)
- 【Java】Java获取运行时路径
- Android设置默认输入法
- java.lang.IllegalArgumentException: matching editors or conversion strategy found
- js中的boolean原始类型和Boolean引用类型
- resin设置jvm启动参数
- 第六周(类模板)
- linux 2.4.21--->2.4.37 update
- 插入排序递归版
- C#生成验证码(转载)
- LeetCode:Reverse Linked List II 解法
- 1.11
- Varnish4.x配置文件详解
- 按位与运算符&
- 解决Andriod使用HttpURLConnection 失败问题