- •Пользовательские типы
- •Вариант 1***
- •Вариант 2***
- •Вариант 3***
- •Вариант 4***
- •Вариант 5**
- •Вариант 6**
- •Вариант 7**
- •Вариант 8**
- •Вариант 9**
- •Вариант 10**
- •Вариант 11**
- •Вариант 12**
- •Вариант 13**
- •Вариант 20**
- •Вариант 21**
- •Вариант 14*
- •Вариант 15*
- •Вариант 16*
- •Вариант 17*
- •Вариант 18*
- •Вариант 19*
-
Пользовательские типы
За задачу в *** полагается 20 баллов, в ** – 14 баллов, в * - 10 баллов. Каждый выбирает сам себе уровень сложности и сообщает об этом преподавателю.
Внимание! В каждом задании требуется разработать пользовательский тип (класс). Для демонстрации возможностей класса Вам необходимо написать программу, управляемую через меню (в текстовом режиме). Исходный код класса нужно оформить в виде двух файлов: заголовочного файла с объявлением класса и файла реализации.
-
Вариант 1***
Разработайте пользовательский тип «матрица целых чисел» для использования с разреженными матрицами очень большого размера. Разреженная матрица – это такая матрица, в которой почти все элементы равны 0. Для разрабатываемого типа обязательно определите:
-
конструктор и деструктор;
-
конструктор копирования;
-
“get” и “set” методы для элементов матрицы;
-
“get” методы для размеров матрицы;
-
операторы сложения и умножения;
-
оператор присваивания;
-
оператор сравнения ==;
-
оператор << для вывода матрицы в указанный поток.
-
Вариант 2***
Разработайте пользовательский тип “множество”, где элементы множества – целые числа из диапазона [0..65535]. Для внутреннего представления воспользуйтесь «битовым массивом». Экземпляр класса должен динамически выделять память по мере необходимости, а при создании экземпляра класса должен выделятся блок памяти для хранения чисел из диапазона [0..начальная_емкость-1]. Для разрабатываемого типа обязательно определите:
-
конструктор и деструктор;
-
конструктор копирования;
-
операторы << и >> для добавления и исключения элементов из множества;
-
операторы & и | для пары множеств с семантикой «пересечение множеств» и «объединение множеств»;
-
оператор присваивания;
-
оператор сравнения ==;
-
операторы < и > c семантикой принадлежности одного множества другому;
-
метод для определения принадлежности числа множеству;
-
метод для вывода множества в указанный поток.
-
Вариант 3***
Разработайте пользовательский тип «множество символов». Реализуйте механизм подсчета ссылок (!) для минимизации операций копирования. Для разрабатываемого типа обязательно определите:
-
конструктор и деструктор;
-
конструктор копирования;
-
операторы << и >> для добавления и исключения элементов из множества;
-
операторы & и | для пары множеств с семантикой «пересечение множеств» и «объединение множеств»;
-
оператор присваивания;
-
оператор сравнения ==;
-
операторы < и > c семантикой принадлежности одного множества другому;
-
метод для определения принадлежности символа множеству;
-
метод для вывода множества в указанный поток.
-
Вариант 4***
Разработайте пользовательский тип «Строка». Реализуйте механизм подсчета ссылок (!) для минимизации операций копирования. Для разрабатываемого типа обязательно определите:
-
конструктор и деструктор;
-
конструктор копирования;
-
оператор присваивания;
-
оператор сравнения ==;
-
операторы сравнения < и >;
-
оператор + для конкатенации строк;
-
метод, возвращающий длину строки;
-
оператор [] для доступа к символам строки;
-
операторы >> и << для ввода и вывода в поток.