第六周项目六(1)(2)
来源:互联网 发布:ubuntu安装gnome2 编辑:程序博客网 时间:2024/05/20 15:38
/*Copyright(c)2014,烟台大学计算机学院 *Allrights reserved. *文件名称:MADE2.cpp *作 者:张生栋 *完成日期:2015年4月19日 *问题描述:阅读教材例10.1。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。 (1)要求类成员函数在类外定义。 (2)在此基础上,再实现减法、乘法和除法 *输入描述:无 *输出描述:略 *版 本 号:v1.0 */ #include <iostream>using namespace std;template<class T>class Complex{public: Complex( ) { real=0; imag=0; } Complex(T r,T i) { real=r; imag=i; } Complex complex_add(Complex &c2); Complex complex_minus(Complex &c2); Complex complex_multiply(Complex &c2); Complex complex_divide(Complex &c2); void display( );private: T real; T imag;};template<class T>Complex<T> Complex<T>::complex_add(Complex<T> &c2){ Complex<T> c; c.real=real+c2.real; c.imag=imag+c2.imag; return c;}template <class T>Complex<T> Complex<T>::complex_minus(Complex <T> &c2){ Complex <T> c; c.real=real-c2.real; c.imag=imag-c2.imag; return c;}template <class T>Complex<T> Complex<T>::complex_multiply(Complex <T> &c2){ Complex <T> c; c.real=real*c2.real-imag*c2.imag; c.imag=imag*c2.real+real*c2.imag; return c;}template <class T>Complex<T> Complex<T>::complex_divide(Complex <T> &c2){ Complex <T> c; T d=c2.real*c2.real+c2.imag*c2.imag; c.real=(real*c2.real+imag*c2.imag)/d; c.imag=(imag*c2.real-real*c2.imag)/d; return c;}template<class T>void Complex<T>::display( ){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main( ){ Complex<int> c1(3,4),c2(5,-10),c3; cout<<"c1="; c1.display( ); cout<<"c2="; c2.display( ); c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); c3=c1.complex_minus(c2); cout<<"c1-c2="; c3.display( ); c3=c1.complex_multiply(c2); cout<<"c1*c2="; c3.display( ); c3=c1.complex_divide(c2); cout<<"c1/c2="; c3.display( ); cout<<endl; Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; cout<<"c4="; c4.display( ); cout<<"c5="; c5.display( ); c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); c6=c4.complex_minus(c5); cout<<"c4-c5="; c6.display( ); c6=c4.complex_multiply(c5); cout<<"c4*c5="; c6.display( ); c6=c4.complex_divide(c5); cout<<"c4/c5="; c6.display( ); return 0;}运行结果:
0 0
- 第六周项目六(1)(2)
- 第六周项目六:复数模板类(2)
- 第六周项目六复数类模板(2)
- 第六周项目六:复数模板类(1)
- 第六周 项目六(1):复数模板类
- 第六周 项目六--复数模板类(1)
- 第六周项目六复数模板类(1)
- 第六周 项目六-复数模板类(1)(2)
- 第六周项目六
- 第六周项目六 复数模板类(3)
- 第六周 项目六(3):复数模板类
- 第六周 项目六--复数模板类(3)
- 第六周项目六复数模板类(3)
- 第六周 项目六-复数模板类(3)
- 第六周项目六 复制模板类(复数类)
- 15第六周项目六——复数函数模板(2)
- 第六周项目六——复数模板类(2)
- 第六周项目六——复数模板类(2)
- Delphi 常用函数记录
- [LeetCode]Evaluate Reverse Polish Notation
- C字节对齐详解
- DNS BIND之nsupdate介绍和使用
- Java Socket重要参数讲解
- 第六周项目六(1)(2)
- Python字符串和字典相关操作
- Euresys eVision 加载和保存图像
- jquery为动态生成的元素添加点击事件
- 阻止putty变成inactive
- WPF下使用Uri加载相对路径资源
- nyoj题目24:素数距离问题
- hrift概述
- 同步/异步与阻塞/非阻塞的区别--多线程编程基础