Перевантаження операцій у Borland C

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

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

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

Рік:
2006
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
КН

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

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ІСМ  Звіт про виконання лабораторної роботи № 4 з курсу „Технологія проектування програмних систем” на тему: «Перевантаження операцій у Borland C++» Мета роботи: вивчення способів перевантаження операцій та їх використання для роботи з класами та об’єктами. Порядок роботи 1. Вивчити способи перевантаження операцій у Borland C++. 2. Використовуючи завдання до лабораторної роботи № 2, перевантажити ряд операцій для зручності роботи з об’єктами оголошених класів. 3. Оформити звіт по роботі. Програма та результати її виконання #include <stdio.h> #include <conio.h> #include <iostream.h> #include <fstream.h> #define null 0 template <class T> class Vector { private: T *p; int num; public: Vector(int); Vector(const Vector&); ~Vector(); friend ostream& operator <<(ostream&, Vector&); friend istream& operator >>(istream&, Vector&); friend ofstream& operator <<(ofstream&, Vector&); friend ifstream& operator >>(ifstream&, Vector&); Vector& operator=(Vector& ar); T operator[](int i); int size(void); void read(void); void write(void); void sort(void); }; // constructor 1 template <class T> Vector<T>::Vector(int num) { p = new T[num]; this->num = num; } // constructor 2 template <class T> Vector<T>::Vector(const Vector& ar) { if (p) delete []p; this.num = ar.num; p = new T[num]; for (int i=0; i<num; i++) p[i] = ar.p[i]; } // destructor template <class T> Vector<T>::~Vector() { delete []p; } // ostream overload for console output template <class T> ostream& operator <<(ostream& os, Vector<T>& ar) { for (int i=0; i<ar.num; i++) os << ar.p[i] << " "; os << endl; return os; } // istream overload for console input template <class T> istream& operator >>(istream& is, Vector<T>& ar) { for (int i=0; i<ar.num; i++) is >> ar.p[i]; return is; } // ofstream overload for file output template <class T> ofstream& operator <<(ofstream& ofs, Vector<T>& ar) { for (int i=0; i<ar.num; i++) ofs << ar.p[i] << " "; ofs << endl; return ofs; } // ifstream overload for file input template <class T> ifstream& operator >>(ifstream& ifs, Vector<T>& ar) { for (int i=0; i<ar.num; i++) ifs >> ar.p[i]; return ifs; } // get size of Vector template <class T> int Vector<T>::size(void) { return num; } // console input template <class T> void Vector<T>::read(void) { for (int i=0; i<num; i++) scanf("%d", &p[i]); } // console output template <class T> void Vector<T>::write(void) { for (int i=0; i<num; i++) printf("%d ", p[i]); } // sorting template <class T> void Vector<T>::sort(void) { T temp; for (int j=0; j<num-1; j++) for (int i=j; i<num; i++) { if (i==j) continue; if (p[i]<p[j]) { temp = p[j]; p[j] = p[i]; p[i] = temp; } } } template <class T> Vector<T>& Vector<T>::operator=(Vector<T>& ar) { if (this == &ar) return *this; if (p) delete []p; num = ar.num; p = new T[num]; for (int i=0; i<num; i++) p[i] = ar.p[i]; return *this; } template <class T> T Vector<T>::operator[](int i) { if (i<0 || i>=num) return null; else return p[i]; } void main(void) { int n,m; cout << "Choose size of vector A:\a " ; cin >> n; cout << "Choose size of vector B:\a " ; cin >> m; Vector<int> A(n); Vector<int> B(m); // input Vectors cout <<"Please, input "<< A.size() <<" elements of vector A. operator >> (input) worked:\n\a"; cin >> A; cout <<"Please, input "<< B.size() <<" elements of vector B. operator >> (input) worked:\n\a"; cin >> B; // output Vectors cout << "Vector A: "; cout << A; cout << "Vector B: "; cout << B; // overloaded operator = B = A; // output B after appropriation cout << "Vector B after appropriation(B=A): "; cout << B; // demonstrate operator[]. Output Vector B with operator[] cout << "Output Vector B with operator[](B[i]): "; for (int i=0; i<B.size(); i++) cout << B[i] << " "; cout << endl; }  Рис.1. Вигляд вікна програми після виконання Висновки Під час виконання лабораторної роботи я ознайомився зі способами перевантаження операцій та їх використанням для роботи з класами та об’єктами.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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