复数的完整C++实现
2012-08-24 10:48
344 查看
复数的完整C++实现
// Author: Keith A. Shomper
// Date: 11/17/03
// Purpose: To demonstrate a class
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;
class complex_number {
public:
complex_number(double real = 0.0, double imag = 0.0):r(real),i(imag) {}
complex_number(const complex_number& rhs):r(rhs.r),i(rhs.i){};
complex_number operator=(const complex_number& rhs){
if(this!=&rhs){
r=rhs.r;
i=rhs.i;
}
return *this;
}
complex_number& operator+=(const complex_number& rhs);
complex_number& operator-=(const complex_number& rhs);
complex_number& operator*=(const complex_number& rhs);
complex_number& operator/=(const complex_number& rhs);
friend complex_number operator+ (const complex_number &a, const complex_number &b);
friend complex_number operator- (const complex_number &a, const complex_number &b);
friend complex_number operator* (const complex_number &a, const complex_number &b);
friend complex_number operator/ (const complex_number &a, const complex_number &b);
friend ostream& operator<<(ostream& os, const complex_number& rhs);
private:
double r;
double i;
};
complex_number& complex_number::operator+=(const complex_number& rhs){
r+=rhs.r;
i+=rhs.i;
return *this;
}
complex_number& complex_number::operator-=(const complex_number& rhs){
r-=rhs.r;
i-=rhs.i;
return *this;
}
complex_number& complex_number::operator*=(const complex_number& rhs){
r = (r * rhs.r - i * rhs.i);
i = (r * rhs.i + i * rhs.r);
return *this;
}
complex_number& complex_number::operator/=(const complex_number& rhs){
r = (r * rhs.r + i * rhs.i) / (rhs.r * rhs.r + rhs.i * rhs.i);
i = (i * rhs.r - r * rhs.i) / (rhs.r * rhs.r + rhs.i * rhs.i);
return *this;
}
complex_number operator+ (const complex_number &a, const complex_number &b) {
complex_number result(a);
result+=b;
return result;
}
complex_number operator- (const complex_number &a, const complex_number &b) {
complex_number result(a);
result-=b;
return result;
}
complex_number operator* (const complex_number &a, const complex_number &b) {
complex_number result(a);
result*=b;
return result;
}
complex_number operator/ (const complex_number &a, const complex_number &b) {
complex_number result(a);
result/=b;
return result;
}
ostream& operator<<(ostream& os,const complex_number& rhs){
os<<rhs.r<<"+"<<rhs.i<<"i";
}
int main () {
complex_number x(1, 2), y, z;
complex_number sum, difference, product, quotient;
y = complex_number(2, 4);
z = complex_number(3, 0);
cout << "x is: "<< x<< endl;
cout << "y is: "<< y<< endl;
cout << "z is: "<< z<< endl;
sum = x + y;
difference = x - y;
product = x * y;
quotient = sum / z;
cout << "The sum (x + y) is: "<<sum << endl;
cout << "The difference (x - y) is: "<<difference<< endl;
cout << "The product (x * y) is: "<<product << endl;
cout << "The quotient (sum / z) is: "<<quotient << endl;
complex_number a=5;
cout<<"a="<<a<<endl;
a+=3;
cout<<"a="<<a<<endl;
return 0;
}
// Author: Keith A. Shomper
// Date: 11/17/03
// Purpose: To demonstrate a class
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;
class complex_number {
public:
complex_number(double real = 0.0, double imag = 0.0):r(real),i(imag) {}
complex_number(const complex_number& rhs):r(rhs.r),i(rhs.i){};
complex_number operator=(const complex_number& rhs){
if(this!=&rhs){
r=rhs.r;
i=rhs.i;
}
return *this;
}
complex_number& operator+=(const complex_number& rhs);
complex_number& operator-=(const complex_number& rhs);
complex_number& operator*=(const complex_number& rhs);
complex_number& operator/=(const complex_number& rhs);
friend complex_number operator+ (const complex_number &a, const complex_number &b);
friend complex_number operator- (const complex_number &a, const complex_number &b);
friend complex_number operator* (const complex_number &a, const complex_number &b);
friend complex_number operator/ (const complex_number &a, const complex_number &b);
friend ostream& operator<<(ostream& os, const complex_number& rhs);
private:
double r;
double i;
};
complex_number& complex_number::operator+=(const complex_number& rhs){
r+=rhs.r;
i+=rhs.i;
return *this;
}
complex_number& complex_number::operator-=(const complex_number& rhs){
r-=rhs.r;
i-=rhs.i;
return *this;
}
complex_number& complex_number::operator*=(const complex_number& rhs){
r = (r * rhs.r - i * rhs.i);
i = (r * rhs.i + i * rhs.r);
return *this;
}
complex_number& complex_number::operator/=(const complex_number& rhs){
r = (r * rhs.r + i * rhs.i) / (rhs.r * rhs.r + rhs.i * rhs.i);
i = (i * rhs.r - r * rhs.i) / (rhs.r * rhs.r + rhs.i * rhs.i);
return *this;
}
complex_number operator+ (const complex_number &a, const complex_number &b) {
complex_number result(a);
result+=b;
return result;
}
complex_number operator- (const complex_number &a, const complex_number &b) {
complex_number result(a);
result-=b;
return result;
}
complex_number operator* (const complex_number &a, const complex_number &b) {
complex_number result(a);
result*=b;
return result;
}
complex_number operator/ (const complex_number &a, const complex_number &b) {
complex_number result(a);
result/=b;
return result;
}
ostream& operator<<(ostream& os,const complex_number& rhs){
os<<rhs.r<<"+"<<rhs.i<<"i";
}
int main () {
complex_number x(1, 2), y, z;
complex_number sum, difference, product, quotient;
y = complex_number(2, 4);
z = complex_number(3, 0);
cout << "x is: "<< x<< endl;
cout << "y is: "<< y<< endl;
cout << "z is: "<< z<< endl;
sum = x + y;
difference = x - y;
product = x * y;
quotient = sum / z;
cout << "The sum (x + y) is: "<<sum << endl;
cout << "The difference (x - y) is: "<<difference<< endl;
cout << "The product (x * y) is: "<<product << endl;
cout << "The quotient (sum / z) is: "<<quotient << endl;
complex_number a=5;
cout<<"a="<<a<<endl;
a+=3;
cout<<"a="<<a<<endl;
return 0;
}
相关文章推荐
- C++实现委托机制之完整代码实现(一)
- 基于ros---一个完整的实现topic 发布和监听的类和msg的简单使用(使用c++)
- C++ 二叉树Tree类 完整实现
- 求二叉树中节点间的最大距离(c++代码完整实现)
- 复数四则运算-c++代码实现及运行实例结果
- 复数乘法运算(三次实数乘法)-c++代码实现及运行实例结果
- [置顶] C++实现任意复数、实数、矩阵相乘(要求用重载函数)
- C++实现DPM/LatentSVM 完整代码下载 --- 第三篇
- 复数乘法运算(三次实数乘法)-c++代码实现及运行实例结果
- C++实现委托机制之完整代码实现
- c++实现复数运算(运算符重载)
- 【c++】用c++实现复数类及运算符的重载
- c++程序入门(三)——用结构和类分别实现复数加法和乘法
- 采用C/C++语言如何实现复数抽象数据类型Complex
- C++实现复数Complex
- [置顶] c++实现哈夫曼编码完整代码
- Stack的c++实现(不完整)
- 【C++】用拷贝函数实现一个复数类(complex)
- [C++][线程池][完整实现] 转:线程池原理及创建(C++实现)
- C++简单举例:类外实现一个完整的类