Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_Lab_16_17.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
14.46 Mб
Скачать

6.Класс вектор

Приходит студент-программист на занятия с утра злой. Однокурсники его спрашивают:

- Ты чего такой злой?

- Да программу вчера всю ночь набивал.

- И что, не заработала?

- Да нет, заработала.

- Может, неправильно заработала?

- Да нет, правильно.

- А что тогда?

- Да на Backspace уснул…

Автор не известен, но можно ему посочувствовать

Цель работы – разработать собственный (конечно же, гениальный!) класс, предназначенный для обработки массивов чисел (4 час.)

Задание. Требуется разработать свой собственный класс, облегчающий работу с числовыми массивами. Класс должен иметь, помимо конструктора (ов) и деструктора, перечисленные в табл. 1 методы.

Таблица 1

Методы класса

Метод

Назначение

Size

Возвращает фактическое число элементов массива

Capacity

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

SetCapacity

Позволяет задать число элементов массива, для которых должна быть зарезервирована память

SetElem

Задать значение элемента массива с заданным индексом

GetElem

Получить значение элемента массива с заданным индексом

InsertElem

Вставить в заданную позицию новый элемент массива

DeleteElem

Удалить элемент массива с заданным индексом

AddElem

Добавить новый элемент в конец массива

Методы для самостоятельной разработки

InsertVec

Вставить в заданную позицию данного массива другой массив

DeleteVec

Удалить заданное число элементов массива, начиная с элемента с заданным индексом

AddVec

Добавить новый массив в конец данного массива

SortVec

Отсортировать массив в заданном порядке (по возрастанию или убыванию)

Класс должен быть реализован таким образом, чтобы тип его элементов можно было изменить или задать наиболее безболезненным способом. Методы класса должны быть оптимизированы по времени. Это, в частности, значит, что вставка или удаление нескольких элементов массива (методы InsertVec() и DeleteVec()) не должна быть сведена к многократному вызову методов вставки и удаления одного элемента массива.

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

Методические указания. При реализации класса можно воспользоваться примером класса TVector, приведенном в конспекте лекций и ниже.

Для отслеживания вызовов конструкторов и деструкторов класса рекомендуется поместить в них макросы TRACE, которые будут выводить в окно Debug соответствующие сообщения. Можно, естественно, поместить эти макросы и в другие функции класса.

6.1.Пример класса tVector

Этот пример реализован в проекте Vector (консольное приложение с поддержкой MFC). Содержимое заголовочного файла TVector.h (директивы препроцессора и компилятора опущены):

Содержимое файла реализации TVector.cpp (директивы препроцессора и компилятора опущены):

Тестирование класса:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]