ВНИМАНИЕДля получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru

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

Условие
1

Создать класс CFile, инкапсулирующий в себе такие функции работы с файлами, как Open, Close, Seek, Read, Write, GetPosition и GetLength. На базе этого класса создать производный класс CMyDateFile — файл, содержащий в себе данные некоторого определенного типа MyData, а также заголовок, облегчающий доступ к этому файлу.

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

2

Создать класс CPoint — точка. На его основе создать классы CcoloredPoint и CLine. На основе класса CLine создать класс CColoredLine и класс CPolyLine — многоугольник. Все классы должны иметь методы для установки и получения значений всех координат, а также изменения цвета и получения текущего света.

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

3

Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, CCar и CShip. Классы должны иметь возможность задавать и получать координаты, параметры средств передвижения (цена, скорость, год выпуска). Для самолета должна быть определена высота, для самолета и корабля — количество пассажиров. Для корабля — порт приписки.

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

4

Задание 4.1.

Описать базовый класс «Элемент».

Поля:

  • имя элемента (указатель на строку символов);
  • количество входов элемента;
  • количество выходов элемента.

Методы:

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

Задание 4.2.

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

Поля:

  • указатель, используемый для динамического размещения полей, содержащих значения входов.

Методы:

  • конструктор;
  • конструктор копирования;
  • деструктор;
  • метод, задающий значение на входах экземпляра класса;
  • метод, позволяющий опрашивать состояние отдельного входа экземпляра класса;
  • метод, вычисляющий значение выхода (по варианту задания).

Задание 4.3.

На основе класса «Элемент» описать производный класс «Память», представляющий собой триггер. Триггер имеет входы, соответствующие типу триггера, и входы установки и сброса. Все триггеры считаются ассинхронными, сам синхровход в состав триггера не включается.

Поля:

  • массив значений входов объекта класса (задается статически), в массиве учитываются все входы (управляющие и информационные);
  • состояние на прямом выходе триггера;
  • состояние на инверсном выходе триггера.

Методы:

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

Задание 4.4.

Создать класс «Регистр», используя класс «Память» как включаемый класс.

Поля:

  • состояние входа «Сброс» — один для экземпляра класса;
  • состояние входа «Установка» — один для экземпляра класса;
  • статический массив типа «Память» заданной в варианте размерности;
  • статический(е) массив(ы), содержащие значения на соответствующих входах элементов массива типа «Память».

Методы:

  • метод, задающий значение на входах экземпляра класса (желательно в качестве параметров передавать методу указатели на массивы значений);
  • метод, позволяющий опрашивать состояние отдельного выхода экземпляра класса;
  • метод, вычисляющий значение нового состояние экземпляра класса.

Все поля классов «Элемент», «Комбинационный» и «Память» должны быть описаны с ключевым словом private, или protected.

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

Задание 4.5.

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

Конкретный тип комбинационного элемента, тип триггера и разрядность регистра выбираются в соответствии с вариантом задания.

ВариантКомбинац. элементЧисло входовТриггерРазряд. регистра
1И-НЕ4RS8
2ИЛИ5RST10
3МОД2-НЕ6D12
4И8T8
5ИЛИ-НЕ8V9
6И4RS10
7ИЛИ-НЕ5JK11
8МОД25D8
9И4T10
10ИЛИ3JK8
11И-НЕ3RS12
12ИЛИ-НЕ4RST4
13МОД25D10
14МОД2-НЕ6T10
15ИЛИ-НЕ8V10
16И8JK6
17И-НЕ8RS10
18ИЛИ8T10
19МОД26JK8
20МОД2-НЕ5V10
5

Описать базовый класс СТРОКА.

Обязательные поля класса:

  • указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки;
  • значение типа int — хранит длину строки в байтах.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор, принимающий в качестве параметра символ;
  • конструктор копирования;
  • получение длины строки;
  • очистка строки (сделать строку пустой);
  • деструктор.

Описать производный от СТРОКА класса СТРОКА_ИДЕНТИФИКАТОР.

Строки данного класса строятся по правилам записи идентификаторов в языке С и могут включать в себя только те символы, которые могут входить в состав С-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор, принимающий в качестве параметра символ;
  • конструктор копирования;
  • перевод всех символов строки в верхний регистр;
  • перевод всех символов строки в нижний регистр;
  • поиск первого вхождения символа в строку;
  • деструктор.

Переопределить следующие операции:

  • присваивание ( = );
  • сложение ( + ) — операция конкатенации строк;
  • вычитание ( — ) — из строки (первый операнд) удаляются все символы, входящие в строку — второй операнд, при этом может получиться пустая строка;
  • операция ( > ) — проверка на больше. Строка считается больше другой, если код символа первой строки в $i$-й позиции ($i$ изменяется от $0$ до $n-1$, где $n$ — длина более короткой строки) больше кода символа в той же позиции во второй строке, длины строк могут не совпадать.
  • операция ( < ) — проверка на меньше. Строка считается меньшей другой, если код символа первой строки в $i$-й позиции ($i$ изменяется от $0$ до $n-1$, где $n$ — длина более короткой строки) меньше кода символа в той же позиции во второй строке, длины строк могут не совпадать.

Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.

Написать текстовую программу, которая:

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

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

Режим диалога обеспечивается с помощью иерархического меню.

6

Описать базовый класс СТРОКА.

Обязательные поля класса:

  • указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки;
  • значение типа int — хранит длину строки в байтах.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор, принимающий в качестве параметра символ;
  • конструктор копирования;
  • получение длины строки;
  • очистка строки (сделать строку пустой);
  • деструктор.

Описать производный от СТРОКА класса БИТОВАЯ_СТРОКА.

Строки данного класса могут содержать только символы ‘0’ или ‘1’. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как двоичное число.

Отрицательные числа хранятся в дополнительном коде.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор копирования;
  • деструктор;
  • изменение знака на противоположный (перевод числа в дополнительный код).

Переопределить следующие операции (длина строки результата равна длине большей из строк; в случае необходимости более короткая битовая строка расширяется влево знаковым разрядом):

  • присваивание ( = );
  • сложение ( + ) — арифметическая сумма строк;
  • операция ( == ) — проверка на равенство.

Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.

Написать текстовую программу, которая:

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

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

Режим диалога обеспечивается с помощью иерархического меню.

7

Описать базовый класс СТРОКА.

Обязательные поля класса:

  • указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки;
  • значение типа int — хранит длину строки в байтах.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор, принимающий в качестве параметра символ;
  • конструктор копирования;
  • получение длины строки;
  • очистка строки (сделать строку пустой);
  • деструктор.

Описать производный от СТРОКА класса ДЕСЯТИЧНАЯ_СТРОКА.

Строки данного класса могут содержать символы десятичных цифр и символы — и +, задающие знак числа. Символы — или + могут находиться только в первой позиции числа, причем символ + может отсутстовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор копирования;
  • деструктор;
  • метод, определяющий можно ли представить данное число в формате int.

Переопределить следующие операции:

  • присваивание ( = );
  • вычитание ( — ) — арифметическая разность строк;
  • операция ( > ) — проверка на больше (по значению);
  • операция ( < ) — проверка на меньше (по значению).

Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.

Написать текстовую программу, которая:

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

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

Режим диалога обеспечивается с помощью иерархического меню.

8

Описать базовый класс СТРОКА.

Обязательные поля класса:

  • указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки;
  • значение типа int — хранит длину строки в байтах.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор, принимающий в качестве параметра символ;
  • конструктор копирования;
  • получение длины строки;
  • очистка строки (сделать строку пустой);
  • деструктор.

Описать производный от СТРОКА класса КОМПЛЕКСНОЕ_ЧИСЛО.

Строки данного класса состоят из двух полей, разеделенных символом $i$.

Первое поле задает значение реальной части числа, а второе — мнимой. Каждое из полей может содержать только символы десятичных цифр и символы — и +, задающие знак числа. Символы — или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, КОМПЛЕКСНОЕ_ЧИСЛО принимает нулевое значение. Примеры строк: $33i12$, $-7i100$, $+5i-21$.

Обязательные методы:

  • конструктор без параметров;
  • конструктор, принимающий в качестве параметра С-строку (заканчивается нулевым байтом);
  • конструктор копирования;
  • деструктор.

Переопределить следующие операции:

  • присваивание ( = );
  • операции ( == ) — проверка на равенство;
  • умножение ( x ) — умножение чисел.

Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.

Написать текстовую программу, которая:

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

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

Режим диалога обеспечивается с помощью иерархического меню.

Образец выполнения (вариант №3)

Условие задачи

Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, CCar и CShip. Классы должны иметь возможность задавать и получать координаты, параметры средств передвижения (цена, скорость, год выпуска). Для самолета должна быть определена высота, для самолета и корабля — количество пассажиров. Для корабля — порт приписки.

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

Реализация задачи на языке С++

Результаты работы программы

Добавление самолета в базу данных

Добавление автомобиля в базу данных

Добавление корабля в базу данных

Вывод всех транспортных средств на экран

ВНИМАНИЕДля получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru