DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України НУ «Львівська політехніка» Кафедра АСУ / Лабораторна робота №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 == y.re) return true; else return false; } 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), d(1,2), x; cout<<"Insert complex number :"; cin>>x; cout<<"Result: "<<a*(x^2) + b * x + c<<endl; if (c==a) cout<<"c = a"<<endl; else cout<<"c != a"<<endl; if (b==d) cout<<"b = d"<<endl; else cout<<"b != d"<<endl; system("pause"); return 0; } / Індивідуальне завдання: #include <iostream> using namespace std; class triangle { double a, b, c; public: void set_a(double); void set_b(double); void set_c(double); double get_a(); double get_b(); double get_c(); double area(); double area(double, double, double); double perimeter(); double perimeter(double, double, double); bool operator <= (triangle); bool operator >= (triangle); bool operator != (triangle); bool operator < (triangle); bool operator > (triangle); bool operator == (triangle); triangle(double a1, double a2, double a3); ~triangle() {} }; void triangle::set_a(double temp) { a = temp; } void triangle::set_b(double temp) { b = temp; } void triangle::set_c(double temp) { c = temp; } double triangle::get_a() { return a; } double triangle::get_b() { return b; } double triangle::get_c() { return c; } double triangle::area() { double p = (a + b + c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } double triangle::area(double x, double y, double z) { double p = (y + x + z)/2; return sqrt(p*(p-x)*(p-y)*(p-z)); } double triangle::perimeter() { return a + b + c; } double triangle::perimeter(double x, double y, double z) { return x + y + z; } bool triangle::operator <= (triangle ob) { if (area()<=area(ob.a, ob.b, ob.c)) return true; else return false; } bool triangle::operator >= (triangle ob) { if (area()>=area(ob.a, ob.b, ob.c)) return true; else return false; } bool triangle::operator != (triangle ob) { if (area()!=area(ob.a, ob.b, ob.c)) return true; else return false; } bool triangle::operator < (triangle ob) { if (perimeter()<perimeter(ob.a, ob.b, ob.c)) return true; else return false; } bool triangle::operator > (triangle ob) { if (perimeter()>perimeter(ob.a, ob.b, ob.c)) return true; else return false; } bool triangle::operator == (triangle ob) { if (perimeter()==perimeter(ob.a, ob.b, ob.c)) return true; else return false; } triangle::triangle(double a1, double a2, double a3) { a = a1; b = a2; c = a3; } int main() { triangle a(4,5,6), b(7,8,9), c(7,7,10), d(6,5,4); cout<<"Start data:"<<endl; cout<<"Triangle 1: area("<<a.area()<<"), perimeter("<<a.perimeter()<<")"<<endl; cout<<"Triangle 1: area("<<b.area()<<"), perimeter("<<b.perimeter()<<")"<<endl; cout<<"Triangle 1: area("<<c.area()<<"), perimeter("<<c.perimeter()<<")"<<endl; cout<<"Triangle 1: area("<<d.area()<<"), perimeter("<<d.perimeter()<<")"<<endl; cout<<"End data\n"<<endl; if (a > b) cout<<"Perimeter A > perimeter B"<<endl; if (a > c) cout<<"Perimeter A > perimeter C"<<endl; if (a > d) cout<<"Perimeter A > perimeter D"<<endl; if (a < b) cout<<"Perimeter A < perimeter B"<<endl; if (a < c) cout<<"Perimeter A < perimeter C"<<endl; if (a < d) cout<<"Perimeter A < perimeter D"<<endl; if (a == b) cout<<"Perimeter A = perimeter B"<<endl; if (a == c) cout<<"Perimeter A = perimeter C"<<endl; if (a == d) cout<<"Perimeter A = perimeter D"<<endl; if (a >= b) cout<<"Area A >= area B"<<endl; if (a >= c) cout<<"Area A >= area C"<<endl; if (a >= d) cout<<"Area A >= area D"<<endl; if (a <= b) cout<<"Area A <= area B"<<endl; if (a <= c) cout<<"Area A <= area C"<<endl; if (a <= d) cout<<"Area A <= area D"<<endl; if (a != b) cout<<"Area A != area B"<<endl; if (a != c) cout<<"Area A != area C"<<endl; if (a != d) cout<<"Area A != area D"<<endl; system("pause"); return 0; } / Висновок: На даній лабораторній роботі я навчився перевантажувати оператори по відношенню до об’єкта. Також я навчився оголошувати та використовувати дружні функції.
Антиботан аватар за замовчуванням

19.04.2012 14:10

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!