ООПЗИС 4 практическая работа. ВилковВЕ_ООПСЗИ_4лаба. Отчет по лабораторной работе 4 по дисциплине Объектноориентированное программирование систем защиты информации
Скачать 44.9 Kb.
|
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ» (МТУСИ) Кафедра «Информационная безопасность» ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №4 по дисциплине «Объектно-ориентированное программирование систем защиты информации» на тему «Понятие класса. Члены класса. Друзья класса. Перегрузка операций» Вариант 5 Выполнил: студент группы БПЗ1801 Вилков В.Е. Проверил: старший преподаватель кафедры ИБ Барков В.В. Москва, 2021 Цель работыЦелью работы является Научиться создавать простые классы, создавать конструкторы, перегружать операции, создавать объекты классов и передавать их в функции . ЗаданиеВ соответствии с Вашим вариантом разработать класс. Название класса, приватные данные-члены и необходимые публичные функции-члены указаны в таблице ниже. Для всех вариантов необходимо перегрузить операции + - * / и операцию приведения типа к типу double. Составить пользовательскую функцию y, указанную в индивидуальном задании и необходимые вспомогательные функции
Индивидуальные варианты заданий:
Выполнение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); } Результаты работы программы. |