Перегрузка операторов

Разработать объектно-ориентированную программу вычисления разности двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Их разность образуют все буквы первого подмножества, которых нет во втором. Полученный результат должен отображаться строкой стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация вычислений разности должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '' и полем приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 1+(М)

Разработать объектно-ориентированную программу вычисления симметрической разности двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Такую разность образуют все различные буквы из двух заданных подмножеств. Полученный результат должен отображаться строкой стандартного вывода, где все буквы перечислены в алфавитном порядке. Программный код должен быть основан на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '' для выполнения теоретико-множественных операций объединения и разности. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируют двоичные разряды целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 2+(М)

Разработать объектно-ориентированную программу вычисления дополнения до полного алфавита любого подмножества латинских букв, которое передается ей аргументом командной строки. Результатом этой операции должны быть все латинские буквы, кроме заданных аргументом программы. Они должны отображаться строкой стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация вычислений должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '~' и полем приватных данных, где состав множества кодируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 3+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв, которые отсутствуют в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '~' для выполнения теоретико-множественных операций объединения и дополнения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 4+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв кроме тех, которые совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '*' и '~' для выполнения операций пересечения и дополнения двух множеств. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 5+(М)

Разработать объектно-ориентированную программу вычисления дополнения до полного алфавита разности двух заданных подмножеств латинских букв, которые передаются ей аргументами командной строки. Результатом этой операции должны быть все латинские буквы, кроме тех, которые есть только в первом аргументе. Они должны отображаться строкой стандартного вывода, где все буквы перечислены в алфавитном порядке. Программа должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '~' и '' для выполнения операций дополнения и разности. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 6+(М)

Разработать объектно-ориентированную программу для исключения всех латинских букв кроме тех, которые совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Все оставшиеся различные буквы должны отображаться строкой потока стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация таких исключений должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '^' и полем приватных данных, где состав множества кодируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи подмножества латинских букв в бинарный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв

Вариант 7+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв, которые одновременно отсутствуют или совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '^' и '~' для выполнения операций исключения совпадений и дополнения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 8+(М)

Разработать объектно-ориентированную программу вычисления объединения и пересечения двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Полученный результат должен отображаться двумя строками стандартного вывода, где все буквы перечислены в алфавитном порядке. Программная реализация вычислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '*' для выполнения теоретико-множественных операций объединения и пересечения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 9+(М)

Разработать объектно-ориентированную программу вычисления разности двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Их разность образуют все буквы первого подмножества, которых нет во втором. Полученный результат должен отображаться строкой стандартного вывода, где все буквы перечислены в обратном алфавитному порядке. Программная реализация вычислений разности должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '' и полем приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 10+(М)

Разработать объектно-ориентированную программу вычисления симметрической разности двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Такую разность образуют все различные буквы из двух заданных подмножеств. Полученный результат должен отображаться строкой стандартного вывода, где все буквы перечислены в обратном алфавитному порядке. Программный код должен быть основан на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '' для выполнения теоретико-множественных операций объединения и разности. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируют двоичные разряды целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 11+(М)

Разработать объектно-ориентированную программу вычисления дополнения до полного алфавита любого подмножества латинских букв, которое передается ей через аргумент командной строки. Результатом этой операции должны быть все латинские буквы, кроме заданных аргументом программы. Они должны отображаться строкой стандартного вывода, где все буквы перечислены в обратном алфавитному порядке. Программная реализация вычислений должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '~' и полем приватных данных, где состав множества кодируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 12+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв, которые отсутствуют в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в обратном алфавитном порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '~' для выполнения теоретико-множественных операций объединения и дополнения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 13+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв кроме тех, которые совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в обратном алфавитному порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '*' и '~' для выполнения операций пересечения и дополнения двух множеств. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 14+(М)

Разработать объектно-ориентированную программу вычисления дополнения до полного алфавита разности двух заданных подмножеств латинских букв, которые передаются ей аргументами командной строки. Результатом являются все латинские буквы, кроме тех, которые есть только в первом аргументе. Они должны отображаться строкой стандартного вывода, где все буквы перечислены в обратном алфавитном порядке. Программа должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '~' и '' для выполнения операций дополнения и разности. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 15+(М)

Разработать объектно-ориентированную программу для исключения всех латинских букв кроме тех, которые совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Все оставшиеся различные буквы должны отображаться строкой потока стандартного вывода, где все буквы перечислены в обратном алфавитном порядке. Программная реализация таких исключений должна быть основана на разработке класса множества латинских букв с компонентным методом перегрузки оператора '^' и полем приватных данных, где состав множества кодируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи подмножества латинских букв в бинарный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 16+(М)

Разработать объектно-ориентированную программу для перечисления всех латинских букв, которые одновременно отсутствуют или совпадают в двух любых символьных строках, заданных аргументами команды ее вызова. Искомый результат должна отображать строка стандартного вывода, где все буквы перечислены в обратном алфавитном порядке. Программная реализация таких перечислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '^' и '~' для выполнения операций исключения совпадений и дополнения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 17+(М)

Разработать объектно-ориентированную программу вычисления объединения и пересечения двух любых подмножеств латинских букв, которые передаются ей аргументами командной строки. Полученный результат должен отображаться двумя строками стандартного вывода, где все буквы перечислены в обратном алфавитном порядке. Программная реализация вычислений должна быть основана на разработке класса множества латинских букв с компонентными методами перегрузки операторов '+' и '*' для выполнения теоретико-множественных операций объединения и пересечения. Они должны быть ориентированы на обработку поля приватных данных, где состав множества фиксируется двоичными разрядами целого числа. Конструктор класса должен обеспечивать преобразование исходной символьной записи множества в двоичный целочисленный формат. Необходимо также предусмотреть перегрузку оператора класса потока стандартного вывода для отображения объектов класса множества латинских букв.

Вариант 18+(М)

Разработать объектно-ориентированную программу преобразования заданной обыкновенной дроби в конечную десятичную дробь. Обыкновенная дробь должна передаваться программе аргументом командной строки, где записи числителя и знаменателя десятичными цифрами разделены символом '/'. Результат преобразований должна отображать запись вещественного числа с фиксированной точкой строкой стандартного вывода. Программная реализация этого преобразования должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также оператором преобразования типа (operator double) для получения вещественного числа по результату их деления. Конструктор класса должен обеспечивать представление заданной символьной записи обыкновенной дроби парой взаимно простых целочисленных значений ее числителя и знаменателя. Для приведения обыкновенной дроби к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида.

Вариант 19+(Д)

Разработать объектно-ориентированную программу для преобразования заданной конечной десятичной дроби в обыкновенную дробь, которая приведена к несократимому виду. Десятичная дробь должна передаваться программе аргументом командной строки в формате вещественного числа с фиксированной точкой. Результат этого преобразований должен отображаться строкой стандартного вывода, где в записи обыкновенной дроби числитель и знаменатель разделены символом '/'. Программная реализация этого преобразования должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для хранения целочисленных значений числителя и знаменателя. Конструктор класса должен обеспечивать формальный перевод десятичной дроби в обыкновенную дробь и приведение ее к несократимому виду на основе признаков делимости целых чисел на 2 и на 5. Для отображения результатов должна быть предусмотрена дружественная функция перегрузки оператора класса потока стандартного вывода '<<'.

Вариант 20+(Д)

Разработать объектно-ориентированную программу для округления заданной обыкновенной дроби до ближайшего целого числа, значение которого не превосходит ее величину. Запись обыкновенной дроби должна передаваться программе аргументом командной строки, где числитель и знаменатель разделены символом '/'. Результат такого округления должен отображаться через поток стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также оператором преобразования типа (operator int), который преобразует результат их деления в целое число. Конструктор класса должен обеспечивать представление заданной символьной записи обыкновенной дроби парой взаимно простых целочисленных значений ее числителя и знаменателя. Для приведения полученной обыкновенной дроби к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида.

Вариант 21+(Д)

Разработать объектно-ориентированную программу для округления заданной обыкновенной дроби до ближайшего целого числа, значение которого не меньше ее величины. Запись обыкновенной дроби должна передаваться программе аргументом командной строки, где числитель и знаменатель разделены символом '/'. Результат такого округления должен отображаться через поток стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также оператором преобразования типа (operator int), который преобразует результат их деления в целое число. Конструктор класса должен обеспечивать представление заданной символьной записи обыкновенной дроби парой взаимно простых целочисленных значений ее числителя и знаменателя. Для приведения полученной обыкновенной дроби к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида.

Вариант 22+(Д)

Разработать объектно-ориентированную программу представления заданной обыкновенной дроби в виде суммы целой и правильной дробной части. Обыкновенная дробь должна передаваться программе аргументом командной строки, где записи числителя и знаменателя десятичными цифрами разделяет символ '/'. Результат преобразований должен отображаться строкой стандартного вывода, где записи целой и правильной дробной части обыкновенной дроби разделены символом '+'. Программная реализация преобразований должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя. Получение их значений по заданной символьной записи обыкновенной дроби должен обеспечивать конструктор класса. Их функциональную обработку должен обеспечивать компонентный оператор преобразования типа для вычисления целой части обыкновенной дроби и компонентный оператор '' для перегрузки операции вычитания его из исходной дроби.

Вариант 23+(Д)

Разработать объектно-ориентированную программу представления заданной обыкновенной дроби в виде разности целой и правильной дробной части. Обыкновенная дробь должна передаваться программе аргументом командной строки, где записи числителя и знаменателя десятичными цифрами разделяет символ '/'. Результат преобразований должен отображаться строкой стандартного вывода, где записи целой и правильной дробной части обыкновенной дроби разделены символом ''. Программная реализация преобразований должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя. Получение их значений по заданной символьной записи обыкновенной дроби должен обеспечивать конструктор класса. Их функциональную обработку должен обеспечивать компонентный оператор преобразования типа для вычисления целой части обыкновенной дроби и компонентный оператор '' для перегрузки операции вычитания его из исходной дроби.

Вариант 24+(Д)

Разработать объектно-ориентированную программу для вычисления суммы обыкновенной дроби и целого числа, которые должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '+'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 25+(Д)

Разработать объектно-ориентированную программу для вычисления разности обыкновенной дроби и целого числа, которые должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора ''. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 26+(Д)

Разработать объектно-ориентированную программу для перемножения обыкновенной дроби и целого числа, которые должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '*'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 27+(Д)

Разработать объектно-ориентированную программу для деления обыкновенной дроби на целое число. Оба операнда должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '/'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 28+(Д)

Разработать объектно-ориентированную программу для вычисления суммы обыкновенных дробей, которые должны передаваться ей через два аргумента командной строки. Результат вычислений должен отображаться строкой стандартного вывода в формате обыкновенной дроби. Во всех случаях для записи обыкновенных дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '+'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 29+(Д)

Разработать объектно-ориентированную программу для вычисления разности обыкновенных дробей, которые должны передаваться ей через два аргумента командной строки. Результат вычислений должен отображаться строкой стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора ''. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 30+(Д)

Разработать объектно-ориентированную программу для вычисления произведения двух обыкновенных дробей, которые должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '*'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 31+(Д)

Разработать объектно-ориентированную программу для вычисления отношения двух обыкновенных дробей, которые должны передаваться ей через аргументы командной строки. Результат операции должен отображаться строкой потока стандартного вывода в формате обыкновенной дроби. В обоих случаях для записи обыкновенной дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '/'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходной и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Вариант 32+(Д)

Разработать объектно-ориентированную программу для сравнения обыкновенных дробей, которые должны передаваться ей через 2 аргумента командной строки. Результат сравнения должен отображаться строкой потока стандартного вывода, обе заданные дроби разделяет знак отношения порядка между их величинами. Во всех случаях для записи обыкновенных дробей должен применяться символьный формат, где их числители и знаменатели разделены знаком '/'. Программная реализация сравнения должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений их числителя и знаменателя, а также компонентным методом перегрузки оператора '=='. Его код возврата должен быть равен '=', '>' или '<' в зависимости от соотношения перекрестных произведений числителей и знаменателей сопоставляемых дробей. Конструктор класса должен обеспечивать преобразование символьной записи обыкновенной дроби в числовой формат.

Вариант 33+(Д)


 


Варианты контрольной работы

Вариант 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-х. заданных подмножеств латинских букв. Программная реализация вычислений должна быть основана на разработке класса множества с перегрузкой оператора ‘^’, который должен быть реализован внешней функцией с использованием бинарной операции ‘^’ для обработки целочисленных компонентных данных. Результат операции должен отображаться символьной строкой в потоке стандартного вывода. Для удобства отображения результирующего подмножества в алфавитном порядке в программе должна быть предусмотрена перегрузка оператора ‘<<’ класса потока стандартного вывода для объектов множества латинских букв.


 


Приложение 4. Вопросы к экзамену

1. Организация в C++. Компонентные данные и методы. Доступ к компонентам классов.

2. Статические методы и данные классов.

3. Конструкторы классов. Конструктор по умолчанию. Конструкторы копирования-инициализации.

4. Дружественне функции классов.

5. Деструкторы классов. Явный и неявный вызов деструктора. Виртуальные деструкторы

6. Средства динамического распределения в С и С++.

7. Парадигма наследования в С++. Производные классы. Порядок вызова конструкторов и деструкторов базового и производимого классов. Размещение в памяти производного класса.

8. Множественное наследование в С++. Схема размещения в памяти производного класса при множественном наследовании.

9. Кратное множественное наследование в С++. Виртуальное наследование. Схема размещения в памяти производного класса при кратном множественном и виртуальном наследовании.

10. Полиморфиум. Виртуальные функции. Позднее связывание.

11. Абстрактные классы. Чистые функции.

12. Библиотека функции стандартного ввода-вывода.

13. Библиотека функции обработки файлов.

14. Адресная арифметика при работе с массивами данных.

15. Передача аргументов функции по значению, адресу и ссылке.

16. Явное и неявное преобразование типов. Преобразование типов с помощью конструктора и оператор-функции.

17. Программирование генераторов псевдо-случайных последовательностей в С и С++.

18. Классы памяти системы программирования С++. Статические, внешние и автоматические переменные. Статические функции.

19. Контейнерные классы и объекты.

20. Шаблоны классов.

21. Потоковые классы.

22. Стеки.

23. Очереди.

24. Линейные списки.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: