第7周任务3(使用类模板,实现复数的四则运算)
2012-04-03 23:45
405 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者: 臧鹏 * 完成日期: 2012 年 4 月 3 日 * 版 本 号: * 对任务及求解方法的描述部分 * 输入描述: * 问题描述:通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型,1,要求类成员函数在类外定义。2,再 此基础上,在实现减法,乘法和除法。 * 程序输出: * 程序头部的注释结束 */ #include <iostream> using namespace std; template <class numtype> class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex complex_add(Complex &c2); // 复数相加函数 Complex complex_subtract(Complex <numtype> &c2); // 复数相减函数 Complex complex_multiply(Complex <numtype> &c2); // 复数相乘函数 Complex complex_divide(Complex <numtype> &c2); // 复数相除函数 void display( ); // 复数的输出 private: double real; double imag; }; template <class numtype> //每次在类外定义时都要写,以下相同 Complex<numtype> Complex<numtype>::complex_add(Complex <numtype> &c2) //复数相加函数 { Complex <numtype> c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } template <class numtype> Complex<numtype> Complex<numtype>::complex_subtract(Complex <numtype> &c2) // 复数相减函数 { Complex <numtype> c; c.real=real-c2.real; c.imag=imag-c2.imag; return c; } template <class numtype> Complex<numtype> Complex<numtype>::complex_multiply(Complex <numtype> &c2) // 复数相乘函数 { Complex <numtype> 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_divide(Complex <numtype> &c2) //复数相除函数 { Complex <numtype> c; c.real=(real*c2.real+c2.imag*imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(c2.imag*real-c2.real*imag)/(c2.real*c2.real+c2.imag*c2.imag); 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; c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; c6=c4.complex_subtract(c5); cout<<"c4-c5="; c6.display( ); Complex<double> c7(8,8.4),c8(5.34,-15.21),c9; c9=c7.complex_multiply(c8); cout<<"c7*c8="; c9.display( ); Complex<double> c10(8,-2),c11(7,10),c12; c12=c10.complex_divide(c11); cout<<"c10/c11="; c12.display( ); system("pause"); return 0; }
经验积累,
首先,第一次类模板写程序,格式懂了,不简单,很繁琐,要细心,漏一点也会出错,还需要练习。再次,复习了高中知识复数的四则运算。
相关文章推荐
- java实现四则运算,难点主要在理解加减乘除优先级以及使用递归
- 复数四则运算--类模板实现
- 实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、--等等
- 使用“位运算”实现“四则运算”之加减乘除
- 使用栈实现计算四则运算
- 算法--两种方法实现一个Add函数,让两个整数相加,但是不能使用+、-、*、/等四则运算符。
- 使用简单工厂模式实现四则运算 C++
- Java实现四则运算,使用堆栈,检查语法
- 实现复数的加减乘除四则运算的C#类(已测成功)
- 实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、--等等
- 使用Boost.Spirit实现四则运算字符串的解析
- 实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。
- 实现一个add()函数-两数相加(不能使用四则运算以及++--)
- 使用运算符重载实现复数的加法运算
- 类模板实现复数运算的基本操作
- 剑指offer 47----实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、--
- 【实践】js实现简易的四则运算计算器
- 四则运算2代码实现
- 使用Git Hooks实现开发部署任务自动化
- 用位运算实现四则运算之加减乘除(用位运算求一个数的1/3)