Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа № 10 Классы.doc
Скачиваний:
3
Добавлен:
08.12.2018
Размер:
59.9 Кб
Скачать
  1. Пользовательские типы

За задачу в *** полагается 20 баллов, в ** – 14 баллов, в * - 10 баллов. Каждый выбирает сам себе уровень сложности и сообщает об этом преподавателю.

Внимание! В каждом задании требуется разработать пользовательский тип (класс). Для демонстрации возможностей класса Вам необходимо написать программу, управляемую через меню (в текстовом режиме). Исходный код класса нужно оформить в виде двух файлов: заголовочного файла с объявлением класса и файла реализации.

      1. Вариант 1***

Разработайте пользовательский тип «матрица целых чисел» для использования с разреженными матрицами очень большого размера. Разреженная матрица – это такая матрица, в которой почти все элементы равны 0. Для разрабатываемого типа обязательно определите:

  • конструктор и деструктор;

  • конструктор копирования;

  • “get” и “set” методы для элементов матрицы;

  • “get” методы для размеров матрицы;

  • операторы сложения и умножения;

  • оператор присваивания;

  • оператор сравнения ==;

  • оператор << для вывода матрицы в указанный поток.

      1. Вариант 2***

Разработайте пользовательский тип “множество”, где элементы множества – целые числа из диапазона [0..65535]. Для внутреннего представления воспользуйтесь «битовым массивом». Экземпляр класса должен динамически выделять память по мере необходимости, а при создании экземпляра класса должен выделятся блок памяти для хранения чисел из диапазона [0..начальная_емкость-1]. Для разрабатываемого типа обязательно определите:

  • конструктор и деструктор;

  • конструктор копирования;

  • операторы << и >> для добавления и исключения элементов из множества;

  • операторы & и | для пары множеств с семантикой «пересечение множеств» и «объединение множеств»;

  • оператор присваивания;

  • оператор сравнения ==;

  • операторы < и > c семантикой принадлежности одного множества другому;

  • метод для определения принадлежности числа множеству;

  • метод для вывода множества в указанный поток.

      1. Вариант 3***

Разработайте пользовательский тип «множество символов». Реализуйте механизм подсчета ссылок (!) для минимизации операций копирования. Для разрабатываемого типа обязательно определите:

  • конструктор и деструктор;

  • конструктор копирования;

  • операторы << и >> для добавления и исключения элементов из множества;

  • операторы & и | для пары множеств с семантикой «пересечение множеств» и «объединение множеств»;

  • оператор присваивания;

  • оператор сравнения ==;

  • операторы < и > c семантикой принадлежности одного множества другому;

  • метод для определения принадлежности символа множеству;

  • метод для вывода множества в указанный поток.

      1. Вариант 4***

Разработайте пользовательский тип «Строка». Реализуйте механизм подсчета ссылок (!) для минимизации операций копирования. Для разрабатываемого типа обязательно определите:

  • конструктор и деструктор;

  • конструктор копирования;

  • оператор присваивания;

  • оператор сравнения ==;

  • операторы сравнения < и >;

  • оператор + для конкатенации строк;

  • метод, возвращающий длину строки;

  • оператор [] для доступа к символам строки;

  • операторы >> и << для ввода и вывода в поток.