复数类

Complex.cpp

#include<iostream>
#include<cmath>
#include"Complex.h"
using namespace std;
Complex::Complex(double r, double i) {
 m_real = r;
 m_image = i;
}
Complex operator+(Complex &c1, Complex &c2) {
 return Complex(c1.m_real + c2.m_real, c1.m_image + c2.m_image);
}
Complex operator-(Complex &c1, Complex &c2) {
 return Complex(c1.m_real - c2.m_real, c1.m_image - c2.m_image);
}
Complex operator*(Complex &c1, Complex &c2) {
 return Complex(c1.m_real * c2.m_real, -(c1.m_image * c2.m_image));
}
Complex operator/(Complex &c1, Complex &c2) {
 return Complex(((c1.m_real*c2.m_real) + (c1.m_image*c2.m_image)) / (c1.m_real*c1.m_real + c2.m_real*c2.m_real)
  , ((c1.m_image*c2.m_real) - (c1.m_real*c2.m_image)) / (c1.m_real*c1.m_real + c2.m_real*c2.m_real));
}
Complex & Complex::operator=(Complex &c1) {
 if (&c1 == this) return *this;
 m_real = c1.m_real;
 m_image = c1.m_image;
 return *this;
}
Complex & Complex::operator++()
{
 ++m_real;
 return *this;
}
Complex & Complex::operator--()
{
 --m_real;
 return *this;
}
Complex Complex::operator++(int)
{
 Complex c = *this;
 m_real++;
 return c;
}
Complex Complex::operator--(int)
{
 Complex c = *this;
 m_real--;
 return c;
}
Complex & Complex::operator+=(Complex &c1) {
 m_real += c1.m_real;
 m_image += c1.m_image;
 return *this;
}
Complex & Complex::operator-=(Complex &c1) {
 m_real -= c1.m_real;
 m_image -= c1.m_image;
 return *this;
}
Complex & Complex::operator*=(Complex &c1) {
 m_real *= c1.m_real;
 m_image *= -c1.m_image;
 return *this;
}
Complex & Complex::operator/=(Complex &c1) {
 m_real = ((c1.m_real*m_real) + (c1.m_image*m_image)) / (c1.m_real*c1.m_real + m_real * m_real);
 m_image = ((c1.m_image*m_real) - (c1.m_real*m_image)) / (c1.m_real*c1.m_real + m_real * m_real);
 return *this;
}
ostream& operator<<(ostream & cout, const Complex& c1) {
 if (c1.image() >= 0)
  cout << "Complex is:" << c1.m_real << " + " << c1.m_image << "i" << endl;
 else
  cout << "Complex is:" << c1.m_real << " - " << -c1.m_image << "i" << endl;
 return cout;
}
istream& operator>>(istream &cin, Complex &c1) {
 cout << "please input the real:";
 cin >> c1.m_real;
 cout << "please input the image:";
 cin >> c1.m_image;
 return cin;
}
bool operator==(const Complex &c1, const Complex &c2) {
 return (c1.real() == c2.real()) && (c1.image() == c2.image());
}
double Complex::mod() { // 取模
 return sqrt(this->m_real*this->m_real + this->m_image*this->m_image);
}
Complex Complex::conjugate() { // 共轭
 Complex c;
 c.m_real = this->m_real;
 c.m_image = -this->m_image;
 return c;
}
int main() {
 Complex c1, c2;
 cin >> c1 >> c2;
 cout << c1 << c2;
 system("pause");
 return 0;
}

Complex.h

#pragma once
#include <iostream>
using namespace std;
class Complex {
public:
 Complex(double r = 0, double i = 0);
 friend Complex operator+(Complex &c1, Complex &c2);
 friend Complex operator-(Complex &c1, Complex &c2);
 friend Complex operator*(Complex &c1, Complex &c2);
 friend Complex operator/(Complex &c1, Complex &c2);
 friend ostream & operator<<(ostream &, const Complex &);
 friend istream & operator>>(istream &, Complex &);
 Complex & operator += (Complex &);
 Complex & operator -= (Complex &);
 Complex & operator *= (Complex &);
 Complex & operator /= (Complex &);
 Complex & operator = (Complex &);
 Complex & operator++(); // 前置++
 Complex & operator--(); // 前置--
 Complex   operator++(int); // 后置++
 Complex   operator--(int); // 后置--
 double real() const { return m_real; }
 double image() const { return m_image; }
 double mod(); // 取模
 Complex conjugate(); // 共轭
 ~Complex() {}
private:
 double m_real;
 double m_image;
};

猜你喜欢

转载自blog.csdn.net/CoderMaximum/article/details/86029426
今日推荐