Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2020, 17:35   #1
Falcome
Пользователь
 
Регистрация: 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();
}
Falcome вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузки объединения и сравнения 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