Предмет: Информатика, автор: mari78965

Помогите с задачей C++
Разработать класс Set (множество). Внутренним представлением класса Set является целочисленный массив элементов множества. Создать шаблон функцию сложения с целым числом, использующую аргументы различных типов, включая объекты класса Set (добавление элементов в множество с исключением дублирования элементов, путем перегрузки оператора +).
(Шаблон) Функция, определяющая второй по величине элемент массива (т.е. тот, который будет максимальным, если исключить из массива текущий максимальный.
Как исправить программу , чтоб она работала:

#include
#include
#include
template
void sum(T1 a, T2 b) {
std::cout << a + b;
}
template
T Max(const T* A, int size)
{
T max = A[0];
for (int i = 0; i < size; i++)
if (A[i] > max)
max = A[i];
return max;
}

class Set {

private:
int* elements;
int size;
public:
// Конструктор по умолчанию
Set() : elements(nullptr), size(0) {}
// Конструктор копирования
Set(const Set& other) : size(other.size) {
elements = new int[size];
std::copy(other.elements, other.elements + size, elements);
}
// Деструктор
~Set() {
delete[] elements;
}
// Перегрузка оператора +
Set operator+(const Set& other) const {
Set result = *this; // Создаем копию текущего множества
for (int i = 0; i < other.size; ++i) {
if (!result.contains(other.elements[i])) {
result.addElement(other.elements[i]);
}
}
return result;
}

// Перегрузка оператора присваивания

Set& operator=(const Set& other) {
if (this != &other) {
delete[] elements;
size = other.size;
elements = new int[size];
std::copy(other.elements, other.elements + size, elements);
}
return *this;
}

// Перегрузка оператора ==

bool operator==(const Set& other) const {
if (size != other.size) {
return false;
}

for (int i = 0; i < size; ++i) {
if (!other.contains(elements[i])) {
return false;
}
}

return true;

}

// Перегрузка оператора !=
bool operator!=(const Set& other) const {
return !(*this == other);
}

// Проверка наличия элемента в множестве
bool contains(int element) const {

for (int i = 0; i < size; ++i) {
if (elements[i] == element) {
return true;
}
}
return false;
}

// Добавление элемента в множество
void addElement(int element) {
if (!contains(element)) {
int* newElements = new int[size + 1];
std::copy(elements, elements + size, newElements);
newElements[size] = element;
delete[] elements;
elements = newElements;
++size;
}

}
// Вывод элементов множества
void display() const {
std::cout << "Элементы множества: ";
for (int i = 0; i < size; ++i) {
std::cout << elements[i] << " ";
}
std::cout << std::endl;

}

};

int main() {
setlocale(LC_ALL, "RU");
SetConsoleCP(1251);
Set set1, set2, setResult;
set1.addElement(1);
set1.addElement(2);
set1.addElement(3);
set2.addElement(3);
set2.addElement(4);
set2.addElement(5);

// Перегрузка оператора +
setResult = set1 + set2;
set1.display();
set2.display();
setResult.display();

// Перегрузка оператора ==

if (set1 == set2) {
std::cout << "Множества равны." << std::endl;
}
else {
std::cout << "Множества не равны." << std::endl;
}

// Перегрузка оператора !=
if (set1 != set2) {
std::cout << "Множества не равны." << std::endl;
}
else {
std::cout << "Множества равны." << std::endl;
}
sum(10, 25.5);
Max(*setResult, 4);
return 0;

}

Ответы

Автор ответа: Аноним
0

Ответ:

class Set {

int* elements = nullptr;

int size = 0;

Set() : elements(new int[10]), size(0) {}

~Set() { delete[] elements; }

// Конструктор копирования

Set(const Set&) = delete;

// Оператор присваивания

Set& operator=(const Set&) = delete;

};

template <typename T>

class Addition {

T a, b;

public:

Addition(const T& a, const T& b) : a(a), b(b) {}

};

// Перегрузка оператора + для добавления элементов множества

template <typename T1, typename T2>

class Sum {

public:

Sum(const T1& a, const T2& b) { std::cout << “(” << a << ", " << b << “)\n”; }

};

template<typename T, typename U>

void add(const T a, const U b) {

typedef typename std::common_type<T, U>::type CommonType;

std::cout << static_cast<CommonType>(a) + static_cast<CommonType>(b) << std::endl;

}

В функции main вы должны написать код, который будет выполнять поставленную задачу. Это может включать в себя создание объектов, вызов функций, обработку пользовательского ввода и многое другое. Конкретный код, который вы напишете, зависит от того, что вы пытаетесь сделать.

Например, если вы хотите просто ввести число и вывести его на экран, вы можете написать следующий код:

#include <iostream>

int main() {

int number;

std::cout << "Введите число: ";

std::cin >> number;

std::cout << number << std::endl;

return 0;

}

В этом примере программа попросит пользователя ввести число, а затем выведет это число на экран.


mari78965: a в int main что писать?
marina789102: Подскажите, пожалуйста, как оформить шаблон функцию , определяющую второй по величине элемент массива?
marina789102: У меня язык С++. Мой вопрос по этой задаче: Как заполнить массив числами?(это же нужно для нахождения максим.значения)
Похожие вопросы
Предмет: Математика, автор: emma8372