Главная страница

ООПЗИС 4 практическая работа. ВилковВЕ_ООПСЗИ_4лаба. Отчет по лабораторной работе 4 по дисциплине Объектноориентированное программирование систем защиты информации


Скачать 44.9 Kb.
НазваниеОтчет по лабораторной работе 4 по дисциплине Объектноориентированное программирование систем защиты информации
АнкорООПЗИС 4 практическая работа
Дата14.04.2021
Размер44.9 Kb.
Формат файлаdocx
Имя файлаВилковВЕ_ООПСЗИ_4лаба.docx
ТипОтчет
#194767

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ»

(МТУСИ)

Кафедра «Информационная безопасность»

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №4

по дисциплине

«Объектно-ориентированное программирование систем защиты информации»

на тему

«Понятие класса. Члены класса. Друзья класса. Перегрузка операций»

Вариант 5

Выполнил:

студент группы БПЗ1801

Вилков В.Е.

Проверил:

старший преподаватель кафедры ИБ

Барков В.В.

Москва, 2021

Цель работы


Целью работы является Научиться создавать простые классы, создавать конструкторы, перегружать операции, создавать объекты классов и передавать их в функции .

Задание


В соответствии с Вашим вариантом разработать класс. Название класса, приватные данные-члены и необходимые публичные функции-члены указаны в таблице ниже.

Для всех вариантов необходимо перегрузить операции + - * / и операцию приведения типа к типу double.

Составить пользовательскую функцию y, указанную в индивидуальном задании и необходимые вспомогательные функции

Варианты

1-5




Название класса

Complex




Приватные данные-члены

double re; (действительная часть)
double im;

(мнимая часть)




Публичные функции-члены

double Re() const;

double Im() const;

double R() const;

double Phi() const;


Пользовательские функции

Complex y(const Complex &z);



Complex y(const Complex &z);



Вспомогательные функции

Complex sin(const Complex &z);
Complex cos(const Complex &z);
Complex ch(const Complex &z);
Complex sh(const Complex &z);
Complex exp(const Complex &z);
Complex pow(const Complex &z1, const Complex &z2);

Complex sin(const Complex &z);
Complex tg(const Complex &z);
Complex th(const Complex &z);
Complex sh(const Complex &z);
Complex pow(const Complex &z1, const Complex &z2);

Индивидуальные варианты заданий:

Complex y(const Complex &z);

5.


Выполнение


1.Complex.h

#include

#include
class Complex

{

private:

double re;

double im;

public:

Complex(double, double);

Complex(double);

Complex();
double Re() const;

double Im() const;

double R() const;

double Phi() const;

double cosh(Complex z) const;

double exp(Complex z) const;
friend std::ostream& operator<<(std::ostream& out, const Complex& ex);

friend std::istream& operator>>(std::istream& in, Complex& ex);

Complex operator+(Complex& expr);

Complex operator+(const int& expr) const;

Complex operator+=(Complex& expr);

Complex operator-() const;

Complex operator-(Complex& expr);

Complex operator-=(Complex& expr);

Complex operator*(Complex& expr);

Complex operator*(const int& expr);

Complex operator*=(Complex& expr);

Complex operator/(Complex& expr);

Complex operator/(const int& ex) const;

Complex operator/=(Complex& expr);

};
Complex exp(const Complex& z);

Complex cosh(const Complex& z);

Complex sinh(const Complex& z);
2.Complex.cpp

#include

#include

#include "complex.h"
using namespace std;
Complex::Complex(double _re, double _im)

{

re = _re;

im = _im;

}
Complex::Complex(double _re)

{

re = _re;

im = 0;

}
Complex::Complex()

{

re = 0;

im = 0;

}
double Complex::Re() const

{

return re;

}
double Complex::Im() const

{

return im;

}
double Complex::R() const

{

return sqrt(pow(re, 2) + pow(im, 2));

}
ostream& operator<<(ostream & out, const Complex & ex)

{

out << "(" << ex.re << ", " << ex.im << ")";

return out;

}
istream& operator>>(istream & in, Complex & ex)

{

in >> ex.re >> ex.im;

return in;

}
Complex Complex::operator+(Complex & ex)

{

return Complex(re + ex.Re(), im + ex.Im());

}
Complex Complex::operator+(const int& ex) const

{

return Complex(re + ex, im / ex);

}
Complex Complex::operator+=(Complex & ex)

{

re += ex.Re();

im += ex.Im();
return *this;

}
Complex Complex::operator-(Complex & ex)

{

return Complex(re - ex.Re(), im - ex.Im());

}
Complex Complex::operator-=(Complex & ex)

{

re -= ex.Re();

im -= ex.Im();
return *this;

}
Complex Complex::operator*(Complex & ex)

{

return Complex(re * ex.Re() - im * ex.Im(), re * ex.Im() + im * ex.Re());

}
Complex Complex::operator*(const int & ex)

{

return Complex(re * ex, im * ex);

}
Complex Complex::operator*=(Complex & ex)

{

double _re = re;
re = re * ex.Re() - im * ex.Im();

im = _re * ex.Im() + im * ex.Re();
return *this;

}
Complex Complex::operator/(Complex & ex)

{

double r = ex.Re() * ex.Re() + ex.Im() * ex.Im();
return Complex((re * ex.Re() + im * ex.Im()) / r, (im * ex.Re() - re * ex.Im()) / r);

}
Complex Complex::operator/(const int & ex) const

{

return Complex(re / ex, im / ex);

}
Complex Complex::operator/=(Complex & ex)

{

double _re = re;

double r = ex.Re() * ex.Re() + ex.Im() * ex.Im();
re = (re * ex.Re() + im * ex.Im()) / r;

im = (im * ex.Re() - _re * ex.Im()) / r;
return *this;

}
Complex Complex::operator-() const

{

return Complex(-re, -im);

}
Complex exp(const Complex& z)

{

return Complex(std::exp(z.Re()) * cos(z.Im()), std::exp(z.Re()) * sin(z.Im()));

}
Complex cosh(const Complex & z)

{

return ((exp(z) + exp(-z)) / 2);

}
Complex sinh(const Complex & z)

{

return ((exp(z) - exp(-z)) / 2);;

}
3. Main.cpp

#include

#include

#include "complex.h"
using namespace std;
Complex y(const Complex& z);
int main()

{

setlocale(LC_ALL, "RUS");

Complex ex1(10, -5);

Complex ex2 = 3;

Complex ex3;

Complex ex4 (3, 40);
cout << "ex1 = " << ex1 << endl;

cout << "ex2 = " << ex2 << endl;

cout << "ex3 = " << ex3 << endl;

cout << endl;
ex3 = ex1 + ex2;

ex1 /= ex3;

ex2 *= ex3;
cout << "ex3 = ex1 + ex2 = " << ex3 << endl;

cout << "ex1 = ex1 / ex3 = " << ex1 << endl;

cout << "ex2 = ex2 * ex3 = " << ex2 << endl;

cout << endl;
cout << "Введите дейтсвительную и мнимую части комплексного числа:" << endl;

cin >> ex3;

cout << "ex3 = " << ex3 << endl;

cout << y(ex4) << endl;

}
Complex y(const Complex &z)

{

return z / 2 + exp(z);

}

Результаты работы программы.




написать администратору сайта