Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <iostream>
- class Complex
- {
- private:
- double Re_{};
- double Im_{};
- public:
- double Re() const noexcept {
- return Re_;
- }
- double Im() const noexcept {
- return Im_;
- }
- void SetRe(double x) noexcept {
- Re_ = x;
- }
- void SetIm(double x) noexcept {
- Im_ = x;
- }
- Complex() {
- this->Re_ = 0.0;
- this->Im_ = 0.0;
- }
- Complex(double re) {
- this->Re_ = re;
- this->Im_ = 0.0;
- }
- Complex(double re, double im) {
- this->Re_ = re;
- this->Im_ = im;
- }
- Complex operator+() const noexcept {
- return *this;
- }
- Complex operator-() const noexcept {
- return { -Re(), -Im() };
- }
- friend Complex operator+(Complex a, const Complex& b) {
- return { a.Re() + b.Re(), a.Im() + b.Im() };
- }
- friend Complex operator-(Complex a, const Complex& b) {
- return { a.Re() - b.Re(), a.Im() - b.Im() };
- }
- friend Complex operator*(Complex a, const Complex& b) {
- return { a.Re() * b.Re() - a.Im() * b.Im(), a.Re() * b.Im() + b.Re() * a.Im() };
- }
- friend Complex operator/(Complex a, const Complex& b) {
- return { ((a.Re() * b.Re() + a.Im() * b.Im()) / (b.Re() * b.Re() + b.Im() * b.Im())),
- ((b.Re() * a.Im() - (a.Re() * b.Im())) / (b.Re() * b.Re() + b.Im() * b.Im())) };
- }
- friend bool operator==(const Complex& a, const Complex& b) {
- return (a.Re() == b.Re() && a.Im() == b.Im());
- }
- friend bool operator!=(const Complex& a, const Complex& b) {
- return !(a == b);
- }
- };
- double abs(Complex a) {
- return std::sqrt(a.Re() * a.Re() + a.Im() * a.Im());
- }
- std::ostream& operator<<(std::ostream& os, const Complex& a) {
- os << a.Re() << ' ' << a.Im() << "i";
- return os;
- }
- std::istream& operator>>(std::istream& is, Complex& a) {
- double Re, Im;
- std::cout << "Complex: ";
- is >> Re >> Im;
- std::cout << '\n';
- a.SetRe(Re);
- a.SetIm(Im);
- return is;
- }
- int main()
- {
- Complex a, b;
- std::cin >> a >> b;
- std::cout << a + b << '\n';
- std::cout << a + 4 << '\n';
- std::cout << a - 2 << '\n';
- std::cout << 2 - a << '\n';
- std::cout << a - b << '\n';
- std::cout << a * b << '\n';
- std::cout << a / b << '\n';
- std::cout << (a == b) << '\n';
- std::cout << (a != b) << '\n';
- std::cout << abs(a) << '\n';
- std::cout << abs(b) << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement