Разработать класс "множество целых чисел"

 
0
 
C++
ava
Iluxych | 25.09.2013, 10:22
Форумчане помогите с программой, только начался С++

1. Разработать класс "множество целых чисел" в соответствии со следующим заданием
Состояние класса -
Множество состоит из элементов типа int (в множестве не может быть двух элементов с одинаковыми значениями) и определяется мощностью (количеством элементов в множестве) и значениями своих элементов, например: множество из 5 элементов {12, 8, 5,-3, 11} Память под множество выделяется статически во время компиляции, и задается массивом фиксированного предельного значения (например максимальная мощность множества 100 элементов).
Протокол класса -
Определяет возможности создания и инициализации экземпляров класса и правила использования их (методы класса).
Предусмотреть следующие возможности:
• пустой конструктор для инициализации экземпляров и массивов экземпляров класса по умолчанию;
• создание экземпляров класса с инициализацией мощностью множества (начальные значения элементов - натуральные числа); 
• создание экземпляров класса с инициализацией мощностью и значениями элементов множества; 
• ввод экземпляров класса из входного потока и вывод их значений в выходной поток
(с помощью перегруженных операторов » и «); 
• объединение двух множеств (с помощью перегруженного оператора сложения +; результирующее множество должно содержать элементы множества 1 и отличающиеся элементы множества 2); 
• добавление нового элемента в множество (с помощью перегруженного оператора +=); 
• вычисление пересечения двух множеств (с помощью перегруженного оператора умножения *; 
результирующее множество должно состоять из элементов, имеющихся и в множестве 1, и в множестве 2); 
• вычисление разности двух множеств ( с помощью перегруженного оператора -; результирующее множество должно состоять из элементов первого множества без тех, которые есть во втором множестве)
• определение, имеется ли некоторый заданный элемент в множестве.
2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего
заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов. Для обработки ошибочных ситуаций использовать механизм исключительных ситуаций.


3. Повторить разработку класса при условии, что память под множество необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задастся указателем на int в состоянии класса).
Дополнить интерфейс класса следующими возможностями:
• создание экземпляра класса с его инициализацией другим экземпляром класса (копирующий конструктор); 
• переопределение экземпляра класса (с помощью перегруженного оператора присваивания).
4. Написать прикладную программу, использующую разработанный класс.
Comments (3)
ava
baldina | 25.09.2013, 09:44 #
Задание противоречиво. Нельзя одновременно обеспечить
Цитата (Iluxych @  25.9.2013,  09:22 findReferencedText)
 Память под множество выделяется статически во время компиляции

и
Цитата (Iluxych @  25.9.2013,  09:22 findReferencedText)
 создание экземпляров класса с инициализацией мощностью множества


а вообще такие классы уже есть: динамически распределяемая - std::vector<int> или std::set<int>
можно наследоваться от этих классов и дополнить операторами +, *, которые будут вызывать соотв. функции из <algorithm> (set_intersection и т.д.)

со статическим распределением памяти немного сложнее. можно взять std::array<int>, но непонятно как получать новые множества (например пересечение множеств), т.е. в какую структуру помещать, т.к. мощность пересечения в момент компиляции неизвестна
ava
Iluxych | 25.09.2013, 10:30 #
Ну вот мне надо, чтобы память выделядась статически, те первую часть программы , можете помочь с реализацией пожалуйста?
ava
feodorv | 25.09.2013, 11:36 #
Цитата (baldina @  25.9.2013,  10:44 findReferencedText)
со статическим распределением памяти немного сложнее.

Я так понял, что под статическим распределением понимается нечто-то вроде:

const int max_cardinality = 100;

class assembling
{
...

private:
  int cardinality;
  int elements[max_cardinality];
};

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit