Вариант 1++
Разработать объектно-ориентированную программу перевода двоичной записи целого числа без знака в его эквивалентную запись в системе счисления по основанию 8. Исходная двоичная запись в форме бинарного вектора произвольной длины, состоящего из символов ‘0’ и ‘1’, должна передаваться программе через аргумент командной строки ее вызова. Результирующая запись этого числа цифрами от ‘0’ до ‘7’в системе счисления по основанию 8 должна отображаться символьной строкой потока стандартного вывода. Программная реализация процедуры указанных преобразований должна быть основана на разработке классов, предоставляющих записи целых чисел без знака в системах счисления по основаниям 2 и 8, которые наследуют стек с фиксированным буфером и используют конструктор копирования-инициализации для выполнения этих преобразований.
Вариант 2++
Разработать объектно-ориентированную программу сравнения 2-х обыкновенных дробей. Обе сравниваемые дроби должны передаваться программе через аргументы командной строки ее вызова, в которых числители и знаменатели дробей разделены символом наклонной черты. Программная реализация процедуры сравнения должна быть основана на разработке класса обыкновенных дробей. В нем необходимо предусмотреть оператор сравнения, который возвращает код: ‘=’, ‘>’, или ‘<’ в зависимости от соотношения перекрестных произведений числителей и знаменателей сопоставляемых дробей. Результат сравнения должен отображаться в форме строки стандартного вывода обоих дробей с указанием знака отношения порядка между их величинами. Для удобства отображения обыкновенных дробей в программе необходимо предусмотреть перегрузку оператора’<<’ класса потока стандартного вывода.
Вариант 3++
Разработать программу поиска натуральных чисел, которые являются цифровым палиндромом, обладающим свойством симметричного расположения своих значащих цифр. Любое натуральное число, для которого необходимо проверить указанное свойство палиндрома, должно передаваться программе через аргумент командной строки ее вызова. Результат проверки свойства палиндрома у заданного числа должен идентифицировать код возврата программы. При этом нулевой код возврата программы должен обозначать, что заданное число не является палиндромом, то код возврата программы должен быть отличен от нуля и равен разности кодов двух первых различных цифр, которые находятся удалении от концов числа. Программная реализация обработки палиндромов должна быть основана на разработке класса символьного стека с фиксированным буфером для размещения цифр заданного числа в обратном порядке.
Вариант 4++
Разработать объектно-ориентированную программу формирования латинского квадрата заданного размера N из последовательных натуральных чисел от 1 до N, в котором все числа любой строки и столбца различны. Для выполнения этого условия каждая следующая строка латинского квадрата должна получаться циклическим сдвигом влево на 1 позицию всех элементов предыдущей строки. При этом начальный элемент предыдущей строки становится последним в текущей строке латинского квадрата, а остальные элементы перемещаются на 1 позицию влево без изменения своего взаимного расположения. Размер латинского квадрата, определяющий его элементный состав, должен передаваться программе целочисленным аргументом командной строки ее вызова. Результат построения латинского квадрата указанного размера должен отображаться через поток стандартного вывода, где все столбцы должны быть выровнены по правой границе значений своих элементов. Программная реализация должна быть основана на разработке класса латинского квадрата, для заполнения которого следует использовать структуру очереди с кольцевым буфером.
Вариант 5++
Разработать объектно-ориентированную программу для вычисления объединения (суммы) и пересечения (произведения) двух любых подмножеств латинских букв. Заданные подмножества латинских букв и знак операции "+" или "*" должны передаваться программе, через аргументы командной строки ее вызова. Программная реализация вычислений должна быть основана на разработке класса множества символов с перезагрузкой операторов ‘+’ и ‘-‘ для выполнения соответствующих теоретико- множественных операций, которые должны быть реализованы внешними функциями. Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результата в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов класса множества латинских букв.
Вариант 6++
Разработать вычисления симметрической разности 2-х заданных подмножеств латинских букв, которую образуют все их элементы, принадлежащие либо одному, либо другому множеству, но не обоим одновременно. Симметрическая разность должна помещаться в результате объединения дополнений второго множества до первого и первого до второго.
Программная реализация вычислений должна быть основана на разработке класса множества символов с перегрузкой операторов ‘+’ и ‘-‘ для определения объединения и дополнения множеств, соответственно. Результат вычислений должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результата в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов класса множества символов.
Вариант 7++
Разработать объектно-ориентированную программу для вычисления длины отрезка прямой линии, который задан целочисленными координатами своих концов на плоскости. Координаты концов отрезка должны передаваться программе парами целых чисел через 2 аргумента командной строки ее вызова. При этом первое число в каждой паре должно обозначать координату по оси X, а второе – по оси Y. Для разделения координат в каждой паре должен использоваться символ точка с запятой. Результат вычислений длины отрезка должен отображаться через поток стандартного вывода. Программная поддержка указанных вычислений должна быть основана на разработке контейнерного класса отрезка прямой линии, компонентными данными которого являются объекты класса точек его концов, а компонентный метод обеспечивает вычисление длины отрезка.
Вариант 8++
Разработать объектно-ориентированную программу для формирования квадратной матрицы Вандермонда по образующему вектору из необязательно различных десятичных цифр от 1 до 9, столбцы которой являются последовательными натуральными степенями элементов образующего вектора. Размер матрицы Вандермонда должен отображаться через поток стандартного вывода, где все столбцы должны быть выровнены полевой границе своих элементов. Программная реализация указанных построений должнабыть основана на разработке класса матрицы Вандермонда с динамическим распределением памяти для таблицы целочисленных значений ее элементов с учетом оценки возможности их вычислений для стандартных типов целочисленных данных в системе программирования С++.
Вариант 9++
Разработать объектно-ориентированную программу, реализующую вычисление разности 2- х. заданных подмножеств латинских букв. Заданные подмножества латинских букв. Заданные подмножества латинских букв и знак операции ‘ – ‘ должны передаваться программе через аргумент командной строки ее вызова. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘ – ‘, который должен бать реализован компонентным методом класса с использованием бинарных операций: сначала EOR(^) (
этот оператор возвращает 1, если только оба бита не равны), а затем AND(&). Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 10++
Разработать объектно-ориентированную программу, реализующую вычисление суммы по модулю 2 для 2-х. заданных подмножеств латинских букв. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘^’, который должен быть реализован компонентным методом класса с использованием бинарной операции ‘^’, для обработки целочисленных компонентных данных. Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 11++
Разработать объектно-ориентированную программу, реализующую сравнение по мощности двух заданных подмножеств латинских букв. Программная реализация сравнений должна быть основана на разработке класса множества с перегрузкой оператора сравнения, который должен возвращать символ ‘<’, ‘=’ или ‘>’ в зависимости от соотношения мощности сравниваемых подмножеств. Результат сравнения должен отображаться в форме строки стандартного вывода обоих подмножеств с указанием знака отношения порядка между их мощностями. Для удобства отображения подмножеств в программе необходимо продумать перегрузку оператора ‘<<’ класса потока стандартного вывода.
Вариант 12++
Разработать объектно-ориентированную программу для перечисления в обратном порядке символов входных строк, которые должны передаваться ей через поток стандартного ввода. Результирующие инвертированные строки с обратным порядком символов должны отображаться через поток стандартного вывода. Указанная обработка входных строк должна продолжаться, пока не введен символ конца потока стандартного ввода, принятый по умолчанию в среде выполнения программы. Программная реализация процедуры инвертирования входного потока должна быть основана на разработке символьного стека с динамическим буфером в форме линейного списка входных символов.
Вариант 13++
Разработать объектно-ориентированную программу, реализующую анализ и последующее перечисление всех латинских букв, не принадлежащих заданному подмножеству латинских букв. Программная реализация анализа должна быть основана на разработке класса множества с перегрузкой оператора, который должен быть реализован компонентным методом класса с использованием бинарной операции’ ‘.Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 14++
Разработать объектно-ориентированную программу, реализующую анализ и последующее перечисление всех латинских букв, не принадлежащих заданному подмножеству латинских букв. Программная реализация анализа должна быть основана на разработке класса множества с перегрузкой оператора, который должен быть реализован компонентным методом класса с использованием бинарной операции’ ‘.Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в порядке, обратном алфавитному, в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 15++
Разработать объектно-ориентированную программу, реализующую вычисление суммы по модулю 2 для 2-х. заданных подмножеств латинских букв. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘^’, который должен быть реализован компонентным методом класса с использованием бинарной операции ‘^’ для обработки целочисленных компонентных данных. Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в порядке, обратном алфавитному, в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 16++
Разработать объектно-ориентированную программу, реализующую сравнение по мощности двух заданных подмножеств латинских букв. Программная реализация сравнений должна быть основана на разработке класса множества с перегрузкой оператора сравнения, который должен возвращать символ ‘<’, ‘=’ или ‘>’ в зависимости от соотношения мощности сравниваемых подмножеств. Результат сравнения должен отображаться в форме строки стандартного вывода обоих подмножеств с указанием знака отношения порядка между их мощностями. Для удобства отображения подмножеств в порядке, обратном алфавитному в программе необходимо продумать перегрузку оператора ‘<<’ класса потока стандартного вывода.
Вариант 17++
Разработать вычисления симметрической разности 2-х заданных подмножеств латинских букв, которую образуют все их элементы, принадлежащие либо одному, либо другому множеству, но не обоим одновременно. Симметрическая разность должна помещаться в результате объединения дополнений второго множества до первого и первого до второго.
Программная реализация вычислений должна быть основана на разработке класса множества символов с перегрузкой операторов ‘+’ и ‘-‘ для определения объединения и дополнения множеств, соответственно. Результат вычислений должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результата порядке, обратном алфавитному в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов класса множества символов.
Вариант 18++
Разработать объектно-ориентированную программу вычисления периметра и площади прямоугольника на плоскости, который задан координатами 2-х своих противоположных вершин, а его стороны параллельны координатным осям. Координаты вершин должны передаваться программе парами целых чисел через 2 аргумента командной строки ее вызова. При этом первое число в каждой паре должно обозначать координату вершины по оси Х, а второе по оси Y. Для разделения координат в каждой паре должен использоваться символ точки с запятой. Результаты вычислений площади и периметра прямоугольника должны отображаться через поток стандартного вывода. Программная реализация указанных вычислений должна быть основана на разработке контейнерного класса изотетичного прямоугольника, компонентными данными которого являются объекты класса противоположных вершин, компонентные методы обеспечивают вычисление его периметра и площади.
Вариант 19++
Разработать объектно-ориентированную программу моделирования абсолютно неупругого центрального удара 2-х тел с заданными линейными скоростями и массами, которая вычисляет их общую массу и скорость после удара на основе закона сохранения импульса. Массы и скорости тел до удара должны быть заданы парами целочисленных значений, которые передаются программе через 2 аргумента командной строки ее вызова. При этом каждый аргумент должен быть записан в форме импульса до удара, где первое число определяет массу тела, а второе – его скорость. Указанные значения в каждой паре должны разделяться символом умножения. Результат моделирования должен отображаться через поток стандартного вывода двумя вещественными числами, которые обозначают массу и скорость тела, образовавшегося после удара. При разработке программы моделирования необходимо использовать аппарат множественного наследования классов импульсов тел.
Вариант 20++
Разработать объектно-ориентированную программу для вычисления температуры смеси 2-х заданных масс одинаковой жидкости с различной температурой на основе уравнения теплового баланса без учета теплообмена с окружающей средой. Значения масс и температур жидкостей смеси должны задаваться целыми величинами, которые передаются программе через 2 аргумента командной строки ее вызова. При этом каждый аргумент должен задаваться парой целых чисел, первое из которых специфицирует массу, а второе – температуру жидкости. Значения указанных физических параметров в каждой паре должны разделяться символом наклонной черты. Результат вычислений должен отображаться через поток стандартного вывода вещественным числом, которое обозначает температуру смеси. При разработке программы необходимо использовать аппарат множественного наследования для описания состояния смеси.
Вариант 21++
Разработать объектно-ориентированную программу, которая располагает в алфавитном порядке любые входные слова, составленные из латинских букв без различия регистра. Входные слова должны передаваться программе строками потока стандартного ввода. Результат алфавитного упорядочивания входных слов должен отображаться через поток стандартного вывода, где все слова из текущей входной строки должны быть перечислены в алфавитном порядке как в словаре. Обработка входных строк должна продолжаться, пока не получен признак конца истока стандартного ввода, принятый в операционной среде выполнения программы. Программная реализация процедуры алфавитного упорядочивания входных слов должна быть основана на использовании структуры линейного списка со сторожем, оперативная память для хранения элементов которого должна динамически распределяться при обработке каждой очередной входной строки потока стандартного ввода.
Вариант 22++
Разработать объектно-ориентированную программу для числовой игры, где 2 противника поочередно на своих ходах должны выбирать из кучи заданного размера любое число предметов, которое не превышает фиксированного значения N. Оба эти параметра должны передаваться программе через аргументы командной строки ее вызова.
Победителем считается игрок, который сумел взять последний предмет из кучи. Игра должна быть реализована в варианте, когда одним из игроков является компьютер, а другим – человек. Право первого хода всегда предоставляется компьютеру. При этом ходы компьютера всегда должны осуществляться в соответствии с выигрышной стратегией, согласно которой число предметов в куче после его ходов должно быть кратно (N+1). При невозможности сделать выигрышный ход компьютер должен выбрать из кучи один предмет. В любом случае выбор компьютера должен отображаться через поток стандартного вывода. Человек на своих ходах может выбирать произвольное допустимое число предметов, указывая его через поток стандартного ввода. При любой ошибке ввода человека автоматически считается, что он извлек из кучи 1 предмет. Ходы человека и компьютера должны сопровождаться информационным запросом, который отображает в потоке стандартного вывода текущий размер кучи и имя игрока. Игра должна завершаться диагностическим сообщением, которое идентифицирует победителя и проигравшего. При разработке программы игры необходимо реализовать виртуальную функцию хода игроков для их производных классов, которые наследуютпараметрв и интерфейс игры от абстрактного базового класса.
Вариант 23++
Разработать объектно-ориентированную программу для числовой игры, где 2 противника поочередно на своих ходах должны наращивать сумму, названную в предыдущем ходе значение суммы противника, выбирая числовое приращение, которое не превышает предельной величины N. Оба эти параметра должны передаваться программе через аргументы командной строки ее вызова.
Победителем считается игрок, который сумел взять последний предмет из кучи. Игра должна быть реализована в варианте, когда одним из игроков является компьютер, а другим – человек. Право первого хода всегда предоставляется компьютеру. При этом ходы компьютера всегда должны осуществляться в соответствии с выигрышной стратегией, согласно которой число предметов в куче после его ходов должно быть кратно (N+1). При невозможности сделать выигрышный ход компьютер должен выбрать из кучи один предмет. В любом случае выбор компьютера должен отображаться через поток стандартного вывода. Человек на своих ходах может выбирать произвольное допустимое число предметов, указывая его через поток стандартного ввода. При любой ошибке ввода человека автоматически считается, что он извлек из кучи 1 предмет. Ходы человека и компьютера должны сопровождаться информационным запросом, который отображает в потоке стандартного вывода текущий размер кучи и имя игрока. Игра должна завершаться диагностическим сообщением, которое идентифицирует победителя и проигравшего. При разработке программы игры необходимо реализовать виртуальную функцию хода игроков для их производных классов, которые наследуют параметры и интерфейс игры от абстрактного базового класса.
Вариант 24++
Разработать объектно-ориентированную программу, реализующую вычисление разности 2- х. заданных подмножеств латинских букв. Заданные подмножества латинских букв. Заданные подмножества латинских букв и знак операции ‘ – ‘ должны передаваться программе через аргумент командной строки ее вызова. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘ – ‘, который должен бать реализован внешней функцией с использованием бинарных операций: сначала EOR(^) (
этот оператор возвращает 1, если только оба бита не равны), а затем AND(&). Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 25++
Разработать объектно-ориентированную программу, реализующую вычисление разности 2- х. заданных подмножеств латинских букв. Заданные подмножества латинских букв. Заданные подмножества латинских букв и знак операции ‘ – ‘ должны передаваться программе через аргумент командной строки ее вызова. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘ – ‘, который должен бать реализован компонентным методом класса с использованием бинарных операций: сначала EOR(^) (
этот оператор возвращает 1, если только оба бита не равны), а затем AND(&). Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в порядке, обратном алфавитному в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.
Вариант 26++
Разработать объектно-ориентированную программу, реализующую вычисление суммы по модулю 2 для 2-х. заданных подмножеств латинских букв. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘^’, который должен быть реализован внешней функцией с использованием бинарной операции ‘^’ для обработки целочисленных компонентных данных. Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.