|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.04.2020, 17:35 | #1 |
Пользователь
Регистрация: 24.03.2020
Сообщений: 15
|
Выполнить перегрузки символов операций
Набросал код,(множества (шаблоном)) программа должна выполнять
Динамическое присваивание, символ "=". При выполнении операции вида A = B, где A и B имеют тип "Множество", объект A должен стать идентичным объекту B. Возвращаемое операцией значение-ссылка на левый операнд. Проверка, являются ли два множества одинаковыми, символ "==". Операция вида A == B, где A и B имеют тип "Множество", должна возвращать значение true, если множества A и B идентичны, и значение false в противном случае. #include<iostream> #include<cstdlib> using namespace std; template<typename T> class Set { public: Set(); //конструктор Set(Set<T>& other); //конструктор копирования Set& operator=(Set<T>& other); bool operator==(Set<T>& other); T& operator[](size_t index); const T& operator[](size_t index) const; void show() const; size_t size() const; ~Set(); private: size_t _size; T* arr; }; template<typename T> Set<T>::Set() { this->_size = 0; this->arr = new T[this->_size]; } } ~Set() { delete[] array; } // деструктор void Enter(); // ввод void Show(); // вывод void Union(Set, Set); // объединение void intersection(Set, Set); // пересечение void add(); // добавка элемента void extract(); // извлечение void check(); // проверка void operator = (Set); // перегрузки int operator [] (int i); void operator ->(); } template<typename T> Set<T>::Set(Set<T>& other) { this->_size = other._size; this->arr = new T[this->_size]; for (size_t i = 0; i < this->_size; i++) { this->arr[i] = other.arr[i]; } } template<typename T> void Set<T>::show() const { for (size_t i = 0; i < this->_size; i++) { cout << this->arr[i] << " "; } cout << endl; } template<typename T> Set<T>& Set<T>:perator=(Set<T>& other) { if (this->arr != nullptr) { delete[] this->arr; } this->_size = other._size; this->arr = new T[this->_size]; for (size_t i = 0; i < this->_size; i++) { this->arr[i] = other.arr[i]; } return *this; } template<typename T> T& Set<T>:perator[](size_t index) { return this->arr[index]; } template<typename T> const T& Set<T>:perator[](size_t index) const { return this->arr[index]; } template<typename T> size_t Set<T>::size() const { return this->_size; } template<typename T> bool Set<T>:perator==(Set<T>& other) { if (this->_size != other._size) { return false; } for (size_t i = 0; i < this->_size; i++) { if (this->arr[i] != other.arr[i]) { return false; } } return true; } template<typename T> Set<T>::~Set() //деструктор { if (this->arr != nullptr) { delete[] this->arr; this->arr = nullptr; this->_size; } } void Set::check() { unsigned int element; std::cout << "Введите элемент для проверки " << std::endl; std::cin >> element; unsigned int i, count = 0; for (i = 0; i < size; i++) if (array[i] == element) std::cout << "элемент найден " << std::endl; else count++; if (count == size) std::cout << "Элемент не найден " << std::endl; } int main() { setlocale(0, "rus"); Set a; std::cout << "Ввод и вывод 1 множества " << std::endl; a.Enter(); a.Show(); Set b = a; std::cout << "инициализация множества 2 с помощью конструктора копии " << std::endl; b.Show(); std::cout << "Ввод множества 2 " << std::endl; b.Enter(); Set c; std::cout << "Объединение множеств " << std::endl; c.Union(a, b); c.Show(); Set d; d.intersection(a, b); std::cout << "Пересечение множеств" << std::endl; d.Show(); std::cout << "Добавка элемента " << std::endl; d.add(); d.Show(); std::cout << "Проверка " << std::endl; d.check(); d.Show(); std::cout << "Извлечение " << std::endl; d.extract(); d.Show(); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузки объединения и сравнения | Alexis_777 | C# (си шарп) | 0 | 19.11.2017 23:15 |
Для строки, размер которой не превышает 255 символов, выполнить действия: | Ego15 | Общие вопросы C/C++ | 1 | 01.11.2017 03:44 |
Перегрузки в C# | iyoulka | C# (си шарп) | 1 | 17.04.2017 18:31 |
Функция перегрузки | bujlka | Помощь студентам | 3 | 02.12.2012 15:44 |
Классы+перегрузки | mo_Ouse | C# (си шарп) | 0 | 05.06.2012 22:21 |