题目
定义一个复数类 Complex,虚部和实部为私有数据类型
相关阅读
完整代码
#include<bits/stdc++.h>
using namespace std;
class Complex{
private:
double re, im;
public:
Complex(){
re = 0;
im = 0;
};
double real() const {return re;};
double imag() const {return im;};
void show(){
if (imag() >= 0)
cout << real() << " + " << imag() << "i" << endl;
else
cout << real() << " - " << -imag() << "i" << endl;
}
Complex& operator+=(Complex complex){
this->re += complex.re;
this->im += complex.im;
return *this;
};
Complex& operator+=(double i){
this->re += i;
return *this;
};
Complex& operator-(){
this->re = -re;
this->im = -im;
return *this;
}
Complex& operator+(){
return *this;
}
friend Complex operator+(Complex complex1, Complex complex2);
friend Complex operator+(double real, Complex complex2);
friend Complex operator+(Complex complex1, double real);
friend Complex operator-(Complex complex1, Complex complex2);
friend Complex operator-(double real, Complex complex2);
friend Complex operator-(Complex complex1, double real);
friend ostream& operator<<(ostream& out, Complex complex1);
friend istream& operator>>(istream& in, Complex &complex1);
friend Complex operator*(Complex complex1, Complex complex2);
friend Complex operator*(double real, Complex complex2);
friend Complex operator*(Complex complex1, double real);
friend Complex operator/(Complex complex1, Complex complex2);
friend Complex operator/(double real, Complex complex2);
friend Complex operator/(Complex complex1, double real);
};
Complex operator+(Complex complex1, Complex complex2){
Complex temp;
temp.re = complex1.re + complex2.re;
temp.im = complex1.im + complex2.im;
return temp;
}
Complex operator+(double real, Complex complex2){
Complex temp;
temp.re = real + complex2.re;
temp.im = complex2.im;
return temp;
}
Complex operator+(Complex complex1, double real){
Complex temp;
temp.re = real + complex1.re;
temp.im = complex1.im;
return temp;
}
Complex operator-(Complex complex1, Complex complex2){
Complex temp;
temp.re = complex1.re - complex2.re;
temp.im = complex1.im - complex2.im;
return temp;
}
Complex operator-(double real, Complex complex2){
Complex temp;
temp.re = real - complex2.re;
temp.im = -complex2.im;
return temp;
}
Complex operator-(Complex complex1, double real){
Complex temp;
temp.re = complex1.re - real;
temp.im = complex1.im;
return temp;
}
Complex operator*(Complex complex1, Complex complex2){
Complex temp;
temp.re = complex1.re*complex2.re - complex1.im*complex2.im;
temp.im = complex1.im*complex2.re + complex1.re*complex2.im;
return temp;
}
Complex operator*(double real, Complex complex2){
Complex temp;
temp.re = real*complex2.re;
temp.im = real*complex2.im;
return temp;
}
Complex operator*(Complex complex1, double real){
Complex temp;
temp.re = real*complex1.re;
temp.im = real*complex1.im;
return temp;
}
Complex operator/(Complex complex1, Complex complex2){
Complex temp;
temp.re = (complex1.re*complex2.re + complex1.im*complex2.im) /
(complex2.re*complex2.re + complex2.im*complex2.im);
temp.im = (complex1.im*complex2.re - complex1.re*complex2.im) /
(complex2.re*complex2.re + complex2.im*complex2.im);
return temp;
}
Complex operator/(double real, Complex complex2){
Complex temp;
temp.re = (real*complex2.re) /
(complex2.re*complex2.re + complex2.im*complex2.im);
temp.im = (-real*complex2.im) /
(complex2.re*complex2.re + complex2.im*complex2.im);
return temp;
}
Complex operator/(Complex complex1, double real){
Complex temp;
temp.re = (complex1.re*real) /
(real*real);
temp.im = (complex1.im*real) /
(real*real);
return temp;
}
ostream& operator<<(ostream& out, Complex complex1){
if (complex1.imag() >= 0)
out << complex1.real() << " + " << complex1.imag() << "i" << endl;
else
out << complex1.real() << " - " << -complex1.imag() << "i" << endl;
}
istream& operator>>(istream& in, Complex& complex1){
in >> complex1.re >> complex1.im;
}
int main(){
Complex c1, c2;
double i = 2.0;
cin >> c1 >> c2;
cout << c1+c2;
cout << i+c2;
cout << c1+i;
cout << c1-c2;
cout << i-c2;
cout << c2-i;
c1 += c2;
cout << -c2;
cout << +c2;
cout << c1*c2;
cout << i*c2;
cout << c1*i;
cout << c1/c2;
cout << i/c2;
cout << c1/i;
}