konica05
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 1. Разработать класс "троичный вектор" в соответствии со следующим заданием: Состояние класса - Троичная функция может принимать значения 0, 1 и Х (неопределенное значение). Аргументами этой функции являются троичные вектора, состоящие из элементов, принимающих значения 0, 1 и Х. Троичный вектор определяется размером (рабочее количество элементов вектора) и массивом значений типа char. Память под вектор выделяется статически, во время компиляции, и задается массивом фиксированного размера. Протокол класса - Определяет возможности создания и инициализации экземпляров класса и правила использования их (методы класса). Предусмотреть следующие возможности: • пустой конструктор для инициализации экземпляров и массивов экземпляров класса по умолчанию; • создание экземпляров класса с инициализацией заданным числом неопределенных значений; • создание экземпляров класса с инициализацией значениями элементов вектора как строки символов; • ввод экземпляров класса из входного потока и вывод их значений в выходной поток (с помощью перегруженных операторов >> и << ); • выполнение поразрядной логической операции ИЛИ двух векторов (с помощью перегруженного оператора | ); • выполнение поразрядной логической операции И двух векторов (с помощью перегруженного оператора &= ); • выполнение сравнения двух векторов (с помощью перегруженного оператора ==); • выполнение поразрядной логической операции НЕ (инвертирование кода; с помощью перегруженного оператора ~ ); • анализ определенности вектора – отсутствие неопределенных значений (истина или ложь). 2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов. 3. Повторить разработку класса при условии, что память под вектор необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задается указателем на char в состоянии класса). Дополнить интерфейс класса следующими возможностями: • создание экземпляра класса с его инициализацией другим экземпляром класса (копирующий конструктор); • переопределение экземпляра класса (с помощью перегруженного оператора присваивания). 4. Написать прикладную программу, использующую разработанный класс. Примечание: пункты задания, отмеченные (*), являются дополнительными; при выполнении операций с векторами разной длины дополнять их значением Х; при выполнении операции И: 0 & Х = 0, 1 & Х = Х; при выполнении операции ИЛИ: 0 | Х = Х, 1 | Х = 1. Это все одна программа)) |