用C++实现复数类
来源:互联网 发布:九阴真经女性捏脸数据 编辑:程序博客网 时间:2024/06/05 16:39
今天我们用C++来实现一下复数的加减运算及比较大小
先来大概说明一下复数的运算。
1.加法运算:(a+bi)+(c+di)=(a+c)+(b+d)i
2.减法运算:(a+bi)-(c+di)=(a-c)+(b-d)i
3.乘法运算:(a+bi)*(c+di)=(ac-bd)*(ad+bc)i
4.除法运算:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+(bc-ad)i/(c^2+d^2)
直接上代码:
#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <stdlib.h>using namespace std;class Complex{public:Complex(double real, double image): _real(real), _image(image){}~Complex(){}Complex operator+(const Complex& c){Complex ret(_real + c._real, _image + c._image);return ret;}Complex operator-(const Complex& c){return Complex(_real - c._real, _image - c._image);}//两复数相乘:(a+bi)*(c+di)=(ac-bd)*(ad+bc)iComplex operator*(const Complex& c){return Complex(_real*c._real - _image*c._image, _real*c._image + _image*c._real);}//两复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+(bc-ad)i/(c^2+d^2)Complex operator/(const Complex& c){return Complex((_real*c._real + _image*c._image)\ / (c._real*c._real + c._image*c._image)\ ,(_image*c._real - _real*c._image)\ / (c._real*c._real + c._image*c._image));}Complex& operator+=(const Complex&c){_real = this->_real + c._real;_image = this->_image + c._image;return *this;}Complex& operator-=(const Complex&c){_real = this->_real - c._real;_image = this->_image - c._image;return *this;}Complex& operator*=(const Complex&c){double real0 = _real;_real = real0 * c._real - _image * c._image;_image = real0 * c._image + _image * c._real;return *this;}Complex& operator/=(const Complex&c){double real0 = _real;_real = (_real*c._real + _image*c._image) / (c._real*c._real + c._image*c._image);_image = (_image*c._real - _real*c._image) / (c._real*c._real + c._image*c._image);return *this;}Complex& operator=(const Complex&c){cout << this << "=" << &c << endl;if (this != &c){_real = c._real;_image = c._image;}return *this;}bool operator>(const Complex& c){if(this->_image != 0 || c._image != 0){cout << "虚数不能比较大小" << endl;return false;}else{if(_real > c._real){return true;}elsereturn false;}}bool operator<(const Complex& c){if(this->_image != 0 || c._image != 0){cout << "虚数不能比较大小" << endl;return false;}return !(*this > c);}bool operator==(const Complex& c){if ((this->_real == c._real) && (this->_image == c._image))return true;return false;}bool operator!=(const Complex& c){if ((this->_real != c._real) || (this->_image != c._image))return true;return false;}friend ostream& operator<<(ostream& out, const Complex& c){out << "real=" << c._real << endl;out << "image=" << c._image << endl;return out;}private:double _real;double _image;};
来测试一下:
int main(){Complex c1(1.0, 2.0);Complex c2(3.0, 4.0);Complex c3 = c1 + c2;Complex c4 = c1 - c2;Complex c5 = c1*c2;Complex c6 = c1 / c2;cout << c3 << endl;cout << c4 << endl;cout << c5 << endl;cout << c6 << endl;c1 = c2 = c3;c1 = c2.operator=(c3);system("pause\n");return 0;}
看一下输出结果吧!
1 0
- 【C++】实现复数类
- 【c++】实现一个复数类
- [c++]复数类的实现
- 【C++】复数类的实现
- 【C++】复数类的实现
- 【C++】复数类的实现
- 【C++】用拷贝函数实现一个复数类(complex)
- 用C++实现复数类
- 【c/c++】复数类
- 【c++】复数加减法类
- 【C++】复数类
- 【C++】复数类
- 【C++】 复数类操作
- 【c++】用c++实现复数类及运算符的重载
- C++实现复数类
- 复数类的实现
- c++实现复数类
- C++实现 复数类
- 网络爬虫基本原理
- opencv学习笔记2 边缘检测
- 2017年4月22日
- 写文章时,你是不是也有这4个困惑?
- 云计算的那些事之网络虚拟化
- 用C++实现复数类
- JUnit测试
- C# 字符串(String)
- mongodb创建集群遇到的问题
- C++ 多线程ole读取Excel
- mybatis/mysql-高级insert
- C# 结构(Struct)
- 解除页面禁止复制限制
- 【fcCRFs】Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials