Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторний практикум.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

Приклади виконання завдання

Приклад №1

Програма для роботи із комплексними числами. Членами класу є дійсна та уявна частина комплексного числа. Методами класу є: вивід комплексного числа на екран; конструктор для ініціалізації комплексних чисел; деструктор; обчислення та вивід модуля комплексного числа; обчислення та вивід аргументу комплексного числа.

Для ініціалізації комплексного числа створено перевантажений кон­струк­тор:

complex(double)ініціалізація комплексного числа виду (якщо параметр в дужках не задано, то по замовчуванню ініціалізується комплексне число );

complex(double,double)ініціалізація комплексного числа виду .

Деструктор ~complex() створено також, хоча для нашого класу задач його використання не є обов’язковим.

Для роботи із комплексними числами описано перевантажені опера­ції:

bool operator ==(complex) порівняння двох комплексних чисел;

complex operator +(complex) додавання двох комплексних чисел;

complex operator -(complex) віднімання двох комплексних чисел;

complex operator *(complex) множення двох комплексних чисел;

complex operator /(complex) ділення двох комплексних чисел;

complex operator -=(complex ) комплексне спряження;

complex operator =(complex) операція присвоєння для комп­лексних чисел;

void operator ++() префіксне збільшення на 1 дійсної части­ни;

void operator ++(int) постфіксне збільшення на 1 уявної час­ти­ни;

void operator --() префіксне зменшення на 1 дійсної части­ни;

void operator --(int) постфіксне зменшення на 1 уявної час­тини.

#include<iostream>

#include<math.h>

#include <windows.h>

#define pi 3.1415926

using namespace std;

class complex

{

private:

double x;

double y;

public:

void operator ++();

void operator ++(int);

Void operator --();

Void operator --(int);

complex operator +(complex );

complex operator -(complex );

complex operator *(complex );

complex operator /(complex );

complex operator -=(complex );

complex operator =(complex);

bool operator ==(complex);

double modul();

double argument();

Void show_complex();

complex(double);

complex(double, double);

~complex();

};

// Порівняння двох комплексних чисел

bool complex::operator== (complex chislo)

{

if(x == chislo.x && y == chislo.y)

{

return true;

}

return false;

};

complex complex::operator +(complex a) //Додавання

{

complex temp(0.);

temp.x=x+a.x;

temp.y=y+a.y;

return temp;

};

complex complex::operator -(complex a) //Віднімання

{

x=x-a.x;

y=y-a.y;

return *this;

};

complex complex::operator *(complex a) //Множення

{

x=x*a.x-y*a.y;

y=y*a.x+x*a.y;

return *this;

};

complex complex::operator /(complex a) //Ділення

{

double temp;

temp=a.x*a.x-a.y*a.y;

x=x*a.x+y*a.y;

y=y*a.x-x*a.y;

return *this;

};

//Комплексне спряження

complex complex::operator -=(complex a)

{

x=a.x;

y=-a.y;

return *this;

};

//Операція присвоєння

complex complex::operator =(complex a)

{

x=a.x;

y=a.y;

return *this;

};

//Префіксне збільшення на 1 дійсної частини

void complex::operator ++()

{

x++;

};

//Префіксне зменшення на 1 дійсної частини

void complex::operator --()

{

x--;

};

//Постфіксне збільшення на 1 уявної частини

void complex::operator ++(int)

{

y++;

};

//Постфіксне зменшення на 1 уявної частини

void complex::operator --(int)

{

y--;

};

double complex::modul()

{

return pow(x*x+y*y,1/2.0);

};

double complex::argument()

{

return atan2(y,x)*180/pi;

};

void complex::show_complex()

{

if(y>=0) cout<<x<<"+"<<y<<"i"<<endl;

else cout<<x<<"-"<<fabs(y)<<"i"<<endl;

};

//Конструктор №1

complex::complex(double x0=1.0)

{

x=x0;

y=x0;

};

//Конструктор №2

complex::complex(double x0, double y0)

{

x=x0;

y=y0;

};

//Деструктор

complex::~complex()

{

};

void main()

{

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

/*Ввід комплексного числа c1 за допомогою конструктора №1 */

complex c1;

cout<<"Комплексне число с1=\t";

c1.show_complex();

/*Ініціалізація комплексного числа c2 за допомогою конструктора №1 */

complex c2(2.);

cout<<"Комплексне число с2=\t";

c2.show_complex();

/*Ініціалізація комплексного числа c3 за допомогою конструктора №2 */

complex c3(1.,-1.);

cout<<"Комплексне число с3=\t";

c3.show_complex();

c3++;

cout<<"Комплексне число с3 після префіксної операції ++ =\t";

c3.show_complex();

++c3;

cout<<"Комплексне число с3 після постфіксної операції ++ =\t";

c3.show_complex();

c3=c3-c1;

cout<<"Комплексне число с3 після віднімання віднього с1=\t";

c3.show_complex();

c3-=c3;

cout<<"Комплексне спряження числа с3=\t";

c3.show_complex();

complex c4;

c4=((c3+c1)/(c3+c2))*c1;

cout<<"Обчислення виразу c4=((c3+c1)/(c3+c2))*c1 : с4=\t";

c4.show_complex();

cout<<"Порівняння чисел с3 та с4 -\t";

if (c3==c4) cout<<"Числа рівні \n";

else cout<<"Числа не рівні між собою\n";

cout<<"Модуль комплексного числа с4=\t"<<c4.modul()<<endl;

cout<<"Аргумент комплексного числа с4=\t"<<c4.argument()<<endl;

cout<<"Комплексне спряження числа с4=\t";

c4-=c4;

c4.show_complex();

cout<<"Модуль комплексного числа с4=\t"<<c4.modul()<<endl;

cout<<"Аргумент комплексного числа с4=\t"<<c4.argument()<<endl;

c4.show_complex();

--c4;

c4.show_complex();

c4--;

c4.show_complex();

}

Результат роботи програми: