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

10.Разработка класса контейнера

В любой программе всегда есть еще одна ошибка

Закон Мерфи

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

10.1.Задание

Разработайте собственный контейнерный класс в соответствии с вашим счастливым вариантом задания (см. табл. 4.1). В качестве член-данного класс должен содержать класс TVector, разработанный Вами в предыдущей работе, и использовать его для хранения данных.

При выполнении любого варианта задания предусмотреть такую реализацию программы, использующей разработанный вами класс, которая бы позволила убедиться в корректности реализации методов класса. В частности, во всех вариантах должен быть реализован метод вывода на монитор всех элементов массива и их количества.

Обязательно следует реализовать два варианта вашего класса: использование класса TVector с конструктором без параметров и с конструктором с параметрами.

Если в вашем задании не оговорен конкретно тип обрабатываемых данных, то он может быть любым числовым. Другими словами, объявляйте тип данных как ElemType, который описан в файле TVector.h.

Разработанный вами класс должен размещаться в отдельных файлах (.h и .cpp).

В качестве примера реализации класса Стек смотрите программу Stck.exe.

10.2.Описание вариантов заданий

Таблица 4.1.

Варианты заданий

вар.

Задание

1,8

Класс Стек (CStack) со следующими методами:

  • запись данного в стек (Push);

  • извлечение данного из стека (Pop);

  • вывод содержимого стека на монитор (Print);

  • получение числа данных в стеке (Size);

  • проверка стека на наличие в нем данных (Empty).

Класс Стек представляет собой такую структуру данных, в которой реализуется правило «первым пришел – последним вышел»

2,9

Класс Очередь (CQueue) с такими же методами, как и класс Стек. Этот класс представляет собой такую структуру данных, в которой реализуется правило «первым пришел - первым вышел»

3,10

Класс Очередь с приоритетом (CPriorityQueue) с такими же методами, как и класс Очередь. Отличительной чертой этого класса является то, что самый большой элемент всегда находится в начале очереди, т.е. данные в очереди упорядочены.

4,11

Класс Ассоциативный массив (CMap), каждый элемент которого имеет не целочисленный индекс, а «имя», представляющее собой строку символов. Когда числовое значение заносится в массив, для него указывается также имя. Аналогичным образом извлечение данного из массива также выполняется по его имени. Для облегчения решаемой задачи можно принять некоторые допущения:

  • длина имени ограничена, например, 5 символами;

  • каждое имя предполагается оригинальным;

  • число элементов массива ограничено, например, 100.

Из этого следует, что имена элементов массива можно хранить в двумерном массиве, например, char Names[100][6] или char *Names[100]. Массив указателей предпочтительнее, так как позволит не накладывать ограничение на число символов в имени.

5,12

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

6,13

Класс Массив (CArrInt), предоставляющий возможность задания начального и конечного индексов массива как целых чисел. Конструктор класса должен получать в качестве параметров начальный и конечный индексы массива. Методы добавления, получения, вставки, удаления элементов массива должны получать в качестве параметра индекс массива целочисленного типа.

7,14

Класс Кольцо (CRing), предназначенный для хранения и обработки данных числового типа как массива. Отличительной особенностью класса является тот факт, что класс всегда «помнит» текущий индекс массива и при добавлении нового элемента массива вставляет его вслед за текущим и делает новым текущим, а при получении значения текущего элемента массива автоматически перемещается к следующему. Когда текущим становится последний элемент массива, то после получения его значения текущим должен стать первый элемент массива.

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