Каждый разрабатываемый класс должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства, индексаторы, перегруженные операции. Функциональные элементы класса должны обеспечивать непротиворечивый, полный, минимальный и удобный интерфейс класс. При возникновении ошибок должны выбрасываться исключения. В программе должна выполняться проверка всех разработанных элементов класса.
Вариант 1
Описать класс для работы с одномерным массивом целых чисел (вектором). Обеспечить следующие возможности:
-задание произвольных целых границ индексов при создании объекта;
- обращение к отдельному элементу массива с контролем выхода за пределы массива;
- выполнение операций поэлементного сложения и вычитания массивов с одинаковыми границами индексов;
- выполнение операций умножения и деления всех элементов массива на скаляр;
- вывод на экран элемента массива по заданному индексу и всего массива.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 2
Описать класс для работы с одномерным массивом строк фиксированной длины. Обеспечить следующие возможности:
-задание произвольных целых границ индексов при создании объекта;
-обращение к отдельной строке массива по индексу с контролем выхода за пределы массива;
- выполнение операций поэлементного сцепления двух массивов с образованием нового массива;
- выполнение операций слияния двух массивов с образованием нового массива;
- выполнение операций слияния двух массивов с исключением повторяющихся элементов;
- вывод на экран элемента массива по заданному индексу и всего массива.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 3
Описать класс многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Обеспечить следующие возможности:
-вычисление значения многочлена для заданного аргумента;
-операции сложения, вычитания и умножения многочленов с получением нового объекта многочлена;
-получение коэффициента по заданному индексу;
- вывод на экран описания многочлена.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 4
Описать класс, обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы, доступа по индексам к элементу матрицы.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 5
Описать класс для работы с восьмеричным числом, хранящимся в виде строки символов. Реализовать конструкторы, свойства, методы и следующие операции:
- операции присваивания, реализующие значимую семантику;
-операции сравнения;
-преобразование в десятичное число;
- форматный вывод;
- доступ к заданной цифре по индексу.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 6
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку (по автору, по году издания или категории), добавления книг в библиотеку, удаления книг из нее, доступа к книге по номеру.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 7
Описать класс «записная книжка». Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям, доступа по номеру.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 8
Описать класс «студенческая группа». Предусмотреть возможность работы с переменным числом студентов, поиска студента по какому-либо признаку (например, по фамилии, имени, дате рождения), добавления и удаления записей, сортировки по разным полям, доступа к записи по номеру.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 9
Описать класс, реализующий тип данных «вещественная матрица» и работу с ним. Класс должен реализовывать следующие операции над матрицами:
- сложение, вычитание (как с другой матрицей, так и с числом);
- комбинированные операции присваивания (+=, -=);
- операции сравнения на равенство /неравенство;
- операции вычисления обратной и транспонированной матрицы;
- доступ к элементу по индексам.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 10
Описать класс, реализующий тип данных «вещественная матрица» и работу с ним. Класс должен реализовывать следующие операции над матрицами:
- умножение, деление (как на другую матрицу, так и на число);
- комбинированные операции присваивания (*=, /=);
- операции возведения в степень;
- методы вычисления детерминанта;
- доступ к элементу по индексам.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 11
Описать класс, реализующий тип данных «вещественная матрица» и работу с ним. Класс должен реализовывать следующие операции над матрицами:
- методы, реализующие проверку типа матрицы (квадратная, диагональная, нулевая, единичная, симметричная, верхняя треугольная, нижняя треугольная);
- операции сравнения на равенство /неравенство;
- доступ к элементу по индексам.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 12
Описать класс «множество», позволяющий выполнять основные операции: добавление и удаление элемента, пересечение, объединение и разность множеств.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 13
Описать класс «предметный указатель». Каждый компонент указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти. Предусмотреть возможность формирования указателя клавиатуры, вывод указателя, вывода номеров страниц для заданного класса, доступа к имеющимся сведениям по номеру места.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 14
Описать класс «колода карт», включающий закрытый массив элементов класса «карта». В карте хранятся масть о номер. Обеспечить возможность вывода карты по номеру, вывода всех карт, перемешивания колоды и выдачи всех карт из колоды поодиночке и по 6 штук в случайном порядке.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 15
Описать класс «автостоянка» для хранения сведения об автомобилях. Для каждого автомобиля записывается госномер, цвет, фамилия владельца и признак присутствия на стоянке. Обеспечить возможность поиска автомобиля по разным критериям, вывода списка присутствующих и отсутствующих на стоянке автомобилей, доступа к имеющимся сведениям по номеру места.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 16
Описать класс «поезд», содержащий следующие закрытые поля:
-название пункта назначения;
-номер поезда (может содержать буквы и цифры);
-время отправления.
Предусмотреть свойства для получения состояния объекта. Описать класс «вокзал», содержащий закрытый массив поездов. Обеспечить следующие возможности:
- вывод информации о поезде по номеру с помощью индекса;
- вывод информации о поездах, отправляющихся после введенного с клавиатуры времени;
- перегруженную операцию сравнения, выполняющую сравнение времени отправления двух поездов;
-вывод информации о поездах, отправляющихся в заданный пункт назначения.
Информация должна быть отсортирована по времени отправления. Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 17
Описать класс «товар», содержащий следующие закрытые поля:
-название товара;
-номер магазина, в котором продается товар;
-стоимость товара в рублях.
Предусмотреть свойства для получения состояния объекта. Обеспечить следующие возможности:
- вывод информации о товаре по номеру с помощью индекса;
- вывод информации о товаре, название которого введено с клавиатуры, если таких товаров нет, выдать соответствующее сообщение;
- сортировку товаров по названию магазина, по наименованию и по цене;
- перегруженную операцию сложения товаров, выполняющую сложение их цен
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 18
Описать класс «самолет», содержащий следующие закрытые поля:
-название пункт назначения;
-шестизначный номер рейса;
-время отправления.
Предусмотреть свойства для получения состояния объекта. Обеспечить следующие возможности:
- вывод информации о самолете по номеру с помощью индекса;
- вывод информации о самолетах, отправляющихся в течение часа введенного с клавиатуры времени;
- вывод информации о самолетах, отправляющихся в заданный пункт назначения;
- перегруженную операцию сравнения, выполняющую сравнение времени отправления двух самолетов
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 19
Описать класс «запись», содержащий следующие закрытые поля:
-фамилия, имя;
-номер телефона;
-дата рождения (массив из трех чисел).
Предусмотреть свойства для получения состояния объекта. Обеспечить следующие возможности:
- вывод на экран информации о человеке, номер телефона которого введен с клавиатуры, если такого нет, выдать на дисплей соответствующее сообщение;
- поиск людей, день рождения которых сегодня или в заданный день;
- поиск людей, день рождения которых будет на следующей неделе;
- поиск людей, номер телефона которых начинается на три заданные цифры.
Написать программу, демонстрирующую все разработанные элементы класса.
Вариант 20
Описать класс «англо-русский словарь», обеспечивающий возможность хранения нескольких вариантов перевода для каждого слова. Реализовать доступ по строковому индексу – английскому слову. Обеспечить возможность вывода всех значений слова по заданному префиксу.
Написать программу, демонстрирующую все разработанные элементы класса.