Halhey
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Помогите написать следующую задачку 1. Разработать класс "перемешанная таблица" в соответствии со следующим заданием: Состояние класса - Таблица представляется в виде вектора (массива), состоящего из элементов. Элемент таблицы со-стоит из ключа (тип int), поля занятости (тип int) и информации (тип char[ ] фиксированной длины). Для описания элемента таблицы целесообразно использовать структуру. Память под массив выделяется статически, во время компиляции, и задается массивом фиксированного размера. Преобразование ключа в индекс выполняется функцией хеширования. Элементы перемешиваются методом сложения с константой. Протокол класса - Определяет возможности создания и инициализации экземпляров класса и правила их использо-вания (методы класса). Предусмотреть следующие возможности: • создание экземпляров структуры (элемента таблицы) с инициализацией начальным состоя-нием по умолчанию; • пустой конструктор для инициализации экземпляров и массивов экземпляров класса (табли-цы) по умолчанию; • создание экземпляров класса (таблицы) с инициализацией заданным количеством элементов из массива ключей и информации; • ввод значения экземпляра структуры (элемента таблицы) из входного потока (с помощью пе-регруженного оператора >> ); • вывод таблицы в выходной поток (с помощью перегруженного оператора << ); • поиск элемента таблицы по ключу (с помощью перегруженного оператора ( ) ); • добавление элемента в таблицу (с помощью перегруженного оператора += ); • выборка информации из таблицы по заданному ключу (с помощью перегруженного операто-ра [ ] ); • удаление элемента из таблицы (с отметкой в поле занятости) по ключу (с помощью перегру-женного оператора -= ); • чистка таблицы от “удаленных элементов” – реорганизация таблицы. 2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающе-го заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалого-вую программу, которая позволяет вводить параметры, отлаживаемых методов. 3. Повторить разработку класса при условии, что память под строку символов в элементе таблицы и массив структур необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задается указателем на char в структуре и указателем на структуру в состоянии класса). Дополнить интерфейс класса следующими возможностями: • память под данные поля информации выделять динамически с помощью оператора new; • создание экземпляра класса (таблицы) с его инициализацией другим экземпляром класса (копирующий конструктор) для элемента таблицы и таблицы; • переопределение экземпляра класса (с помощью перегруженного оператора присваивания) для элемента таблицы и таблицы. 4. Написать прикладную программу, использующую разработанный класс. Примечание: пункты задания, отмеченные (*), являются дополнительными. |