Изучение использования перегрузки операторов (Лабораторная работа № 2), страница 3

return temp;

}

Complex Complex::operator-(const Complex& Right)               // Complex - Complex

{

Complex temp;

temp.real = real-Right.real;

temp.image = image-Right.image;

return temp;

}

Complex Complex ::operator - ()                                // унарный минус

{

Complex temp;

temp.real = -real;

temp.image = -image;

return temp;

}

Complex & Complex::operator = (const Complex Right)             // Complex = Complex

{

if (&Right==this)

return *this;

this->real = Right.real;

this->image = Right.image;

return *this;

}

bool Complex::operator == (Complex Right)                       // Complex == Complex

{

double tLeft = sqrt(real*real+image*image);

double tRight = sqrt(Right.real*Right.real+Right.image*Right.image);

return (tLeft==tRight);

}

bool Complex::operator != (Complex Right)                       // Complex == Complex

{

return !(*this==Right);

}

bool Complex::operator < (Complex &Right)

{

double tLeft = sqrt(real*real+image*image);

double tRight = sqrt(Right.real*Right.real+Right.image*Right.image);

return (tLeft<tRight);

}

bool Complex::operator < (const Complex &Right)

{

double tLeft = sqrt(real*real+image*image);

double tRight = sqrt(Right.real*Right.real+Right.image*Right.image);

return (tLeft<tRight);

}

bool Complex::operator > (Complex &Right)

{

return Right<*this;

}

Complex:: operator int()

{

return (int)sqrt(real*real+image*image);

}

ostream & operator << (ostream &out, Complex &obj)               // ввод в поток

{

out<<"Z = "<<obj.real<<" + "<<obj.image<<"i      ";

return out;

}

ostream & operator << (ostream &out, const Complex &obj)

{

out<<"Z = "<<obj.real<<" + "<<obj.image<<"i      ";

return out;

}

istream & operator >> (istream &in, Complex &obj)                // вывод из потока

{

cout<<"Введите real =     \b\b\b\b";

in>>obj.real;

cout<<"Введите image =     \b\b\b\b";

in>>obj.image;

return in;

}

main.cpp:

#include "Complex.h"

#include <locale>

#define ESC         27

#define ONE         49

#define TWO         50

#define THREE       51

#define FOUR        52

#define FIVE        53

void gotoxy(int, int);

int menu();

void showTable(int, int, Complex**&);

void deleteArr(Complex** &, int);

void add(Complex**, int);

void sub(Complex**, int);

void inc(Complex**, int);

void dec(Complex**, int);

const Complex model(1.5, 2.5);                              // константный объект класса

Complex** arrPointers;                                      // объявление массива исходных

// объектов

Complex** arrResult;                                        // объявление массива объектов// результатов

int arrSize = 5;                                            // размер таблицы

int main()

{

setlocale(LC_ALL, "Russian");

SetConsoleTitleA("LAB2: Complex numbers");

arrPointers = new Complex*[arrSize]();                  // определение массива

arrResult = new Complex*[arrSize]();

for (int i = 0; i<arrSize; i++)                         // заполнить строки таблицы

{

gotoxy(18, 4);

cout<<model<<endl;

showTable(0, 2, arrPointers);

*(arrPointers+i) = new Complex(0, 0);               // создаем объект с параметрами