• Помогите с задачей 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; }

Ответы 1

  • Ответ:

    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;

    }

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years