Класс для работы с комплексными числами

Представление комплексных чисел

Реализовать средствами языка CPP класс для работы с комплексными числами. Включить выполнение основных математических операций: сложение, вычитание, умножение, деление. Привести пример работы с классом.

Реализация класса для работы с комплексными числами включает:

  • конструктор по-умолчанию
  • конструктор копирования
  • конструктор, реализизуюций пользовательскую инициализацию
  • деструктор
  • четыре базовые математические операции (+,-,*,/)
  • перегрузку оператора присваивания
  • перегрузку операторов ввода-вывода (>>, <<) в виде friend-функций
  • функцию, возвращающую модуль (абсолютное значение) комплексного числа

    // Complex.cpp: определяет точку входа для консольного приложения.
    //
     
    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
     
    class Complex // класс комплексных чисел
    {
       double re, im; // целая и мнимая части
     
    // создаем конструкторы   
    public:
     
       Complex() {};
     
       Complex (double r) // конструктор по умолчанию
       {
          re = r; 
    	  im = 0;
       }
     
       Complex (double r, double i) // конструктор по умолчанию
       {
          re = r; 
    	  im = i;
       } 
     
       Complex (Complex &c) // конструктор копирования
       {
          re = c.re; 
    	  im = c.im;
       }
     
       ~Complex() {}
     
       float abs() // Модуль комплексного числа
       {
          return sqrt(re * re - im * im);
       }     
     
       Complex & operator = (Complex &c) // перегрузка оператора присваивания
       {
          re = c.re;
    	  im = c.im;
     
    	  return (*this);
       }
     
       Complex Complex::operator + (Complex &c) // перегрузка оператора сложения
       {
    	  Complex temp;
     
    	  temp.re = re + c.re;
    	  temp.im = im + c.re;
     
    	  return temp;
       }
     
       Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания
       {
    	  Complex temp;
     
    	  temp.re = re - c.re;
    	  temp.im = im - c.re;
     
    	  return temp;
       }
     
       Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
       {
    	  Complex temp;
     
    	  temp.re = re*c.re;
    	  temp.im = re*c.im;
     
    	  return temp;
       }
     
       Complex Complex::operator / (Complex &c) // перегрузка оператора деления
       {
    	  Complex temp;
     
    	  double r = c.re * c.re + c.im * c.im;
    	  temp.re = (re * c.re + im * c.im) / r;
    	  temp.re = (im * c.re - re * c.im) / r;
     
    	  return temp;
       }   
     
       friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора <<
       friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
     
    };
     
    ostream &operator<<(ostream &out, complex &c)
    {
       out << "(" << c.re << ") + I (" << c.im << "\n";
     
       return out;
    }
     
    istream &operator>>(istream &in, Complex &c)
    {
       in >> c.re >> c.im;
     
       return in;
    }
     
    int main()
    {
        Complex value1(5,2);
        Complex value2(3,-3);
     
        cout << value1 << " " << value2 << endl;
     
        cout << value1 + value2 << endl;
     
        cout << value1 - value2 << endl;
     
        cout << value1 * value2 << endl;
     
        cout << value1 / value2 << endl;    
     
        value1 = value2;
     
        cout << value1 << " = " << value2 << endl;
     
        return 0;
    }

  • Ключевые слова: 
    класс для работы с комплексными числами, комплексные числа
    ВложениеРазмер
    Complex.zip874 байта