Перевантаження операцій С

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН

Частина тексту файла

Міністерство освіти і науки, молоді та спорту України НУ «Львівська політехніка» Кафедра АСУ / Лабораторна робота №2 На тему: «Перевантаження операцій С++» Мета роботи: ознайомитись зі способами перевантаження операцій та навчитися використовувати їх при роботі з об’єктами. Послідовність роботи: 1. Ознайомитись зі способами перевантаження операцій у С++ 2. Проаналізувати приклад програми, яка оголошує клас та перевантажує низку операцій над точками у тривимірному просторі. Визначити результат її роботи. 3. Модифікувати текст програми, оголосивши операторні функції друзями класу( якщо це можливо). Запропонувати власні функції друзі-класу. 4. Для заданого варіанта завдання виконати перевантаження операцій для зручності роботи з об’єктами. При необхідності оголосіть певні операторні функції друзями класу. 5. Оформити звіт про роботу за такою структурою: назва роботи; мета роботи; послідовність роботи; індивідуальне завдання; текст програми; контрольний приклад та результати роботи програми; висновки. #include <iostream> #include <assert.h> using namespace std; class complex { double re, im; public: complex(double = 0, double = 0); ~complex(); complex operator + (complex&); complex operator - (complex&); complex operator * (complex&); complex operator / (complex&); complex operator ^ (unsigned); friend istream& operator >> (istream&, complex&); friend ostream& operator << (ostream&, complex&); }; complex::complex(double r, double i) { re = r; im = i; } complex::~complex() { } complex complex::operator + (complex& y) { return complex(re + y.re, im + y.im); } complex complex::operator - (complex& y) { return complex(re - y.re, im - y.im); } complex complex::operator * (complex& y) { return complex(re * y.re - im * y.im, re * y.im + im * y.re); } complex complex::operator / (complex& y) { double r1 = re, i1 = im, r2 = y.re, i2 = y.im; return complex((r1 * r2 - i1 * i2) / (r2 * r2 + i2 * i2), (-r1 * i2 + i1 * r2) / (r2 * r2 + i2 * i2)); } complex complex::operator ^ (unsigned n) { complex y(1, 0); for (unsigned i=1; i<=n; i++) y = y * (*this); return y; } istream& operator >> (istream& is, complex& x) { char c; is>>x.re; cin>>c; assert(c == ','); is>>x.im; return is; } ostream& operator << (ostream& os, complex& x) { os<<x.re<<','<<x.im<<endl; return os; } int main() { complex a(1, 1), b(1, 1), c(1, 1), x; cout<<"Insert complex number :"; cin>>x; cout<<"Result: "<<a*(x^2) + b * x + c<<endl; system("pause"); return 0; } Індивідуальне завдання: Створити клас – трикутник. У закритій частині описати поля – довжини сторін. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції порівняння за периметром <,> та ==, за площею <=, >= та !=. Розвязок: Модифікований код базового класу: #include <iostream> #include <assert.h> using namespace std; class complex { double re, im; public: complex(double = 0, double = 0); ~complex(); friend complex operator + (complex&, complex); friend complex operator - (complex&, complex); friend complex operator * (complex&, complex); friend complex operator / (complex&, complex); friend bool operator == (complex&, complex); complex operator ^ (unsigned); friend istream& operator >> (istream&, complex&); friend ostream& operator << (ostream&, complex&); }; complex::complex(double r, double i) { re = r; im = i; } complex::~complex() { } complex operator + (complex& y, complex x) { return complex(x.re + y.re, x.im + y.im); } complex operator - (complex& y, complex x) { return complex(x.re - y.re, x.im - y.im); } complex operator * (complex& y, complex x) { return complex(x.re * y.re - x.im * y.im, x.re * y.im + x.im * y.re); } complex operator / (complex& y, complex x) { double r1 = x.re, i1 = x.im, r2 = y.re, i2 = y.im; return complex((r1 * r2 - i1 * i2) / (r2 * r2 + i2 * i2), (-r1 * i2 + i1 * r2) / (r2 * r2 + i2 * i2)); } bool operator == (complex& x, complex y) { if (x.im == y.im && x.re == ...
Антиботан аватар за замовчуванням

19.04.2012 14:04

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини