Задачи на классы

Задачи на классы

задачи по программированию

к содержанию задачника

  1. Создайте структуру с именем student, содержащую поля: фамилия и инициалы, номер группы, успеваемость (массив из пяти элементов). Создать массив из десяти элементов такого типа, упорядочить записи по возрастанию среднего балла. Добавить возможность вывода фамилий и номеров групп студентов, имеющих оценки, равные только 4 или 5.
  2. Создайте структуру с именем train, содержащую поля: название пункта назначения, номер поезда, время отправления. Ввести данные в массив из пяти элементов типа train, упорядочить элементы по номерам поездов. Добавить возможность вывода информации о поезде, номер которого введен пользователем. Добавить возможность сортировки массив по пункту назначения, причем поезда с одинаковыми пунктами назначения должны быть упорядочены по времени отправления.
  3. Создать класс с двумя переменными. Добавить функцию вывода на экран и функцию изменения этих переменных. Добавить функцию, которая находит сумму значений этих переменных, и функцию которая находит наибольшее значение из этих двух переменных.
  4. Описать класс, реализующий десятичный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне. Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, позволяющее получить его текущее состояние. Написать программу, демонстрирующую все возможности класса.
  5. Создать класс с двумя переменными. Добавить конструктор с входными параметрами. Добавить конструктор, инициализирующий члены класса по умолчанию. Добавить деструктор, выводящий на экран сообщение об удалении объекта.
  6. Создать класс, содержащий динамический массив и количество элементов в нем. Добавить конструктор, который выделяет память под заданное количество элементов, и деструктор. Добавить методы, позволяющие заполнять массив случайными числами, переставлять в данном массиве элементы в случайном порядке, находить количество различных элементов в массиве, выводить массив на экран.
  7. Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть контроль выхода за пределы массива, возможность обращения к отдельным строкам массива по индексам, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, а также вывод на экран элемента массива по заданному индексу и всего массива.
  8. Составить описание класса многочленов от одной переменной, задаваемых сте­пенью многочлена и массивом коэффициентов. Предусмотреть методы для вы­числения значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта-многочлена, вывод на экран описания многочлена.
  9. Построить три класса (базовый и 3 потомка), описывающих некоторых хищных животных (один из потомков), всеядных(второй потомок) и травоядных (третий потомок). Описать в базовом классе абстрактный метод для расчета количества и типа пищи, необходимого для пропитания животного в зоопарке.
    a) Упорядочить всю последовательность животных по убыванию количества пищи. При совпадении значений – упорядочивать данные по алфавиту по имени. Вывести идентификатор животного, имя, тип и количество потребляемой пищи для всех элементов списка.
    b) Вывести первые 5 имен животных из полученного в пункте а) списка.
    c) Вывести последние 3 идентификатора животных из полученного в пункте а) списка.
    d) Организовать запись и чтение коллекции в/из файл.
    e) Организовать обработку некорректного формата входного файла.
  10. Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку (например, по автору или по году издания), добавления книг в библиотеку, удаления книг из нее, сортировки книг по разным полям.
  11. Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
  12. Создать класс для хранения комплексных чисел. Реализовать операции над комплексными числами: сложение, вычитание, умножение, деление, сопряжение, возведение в степень, извлечение корня. Предусмотреть возможность изменения формы записи комплексного числа: алгебраическая форма, тригонометрическая форма, экспоненциальная форма.
  13. Составить описание класса для представления времени. Предусмотреть возможности установки времени и изменения его отдельных полей (час, минута, секунда) с проверкой допустимости вводимых значений. В случае недопустимых значений полей выбрасываются исключения. Создать методы изменения времени на заданное количество часов, минут и секунд.
  14. Составить описание класса для вектора, заданного координатами его концов в трехмерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами.
  15. Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения медиан. Описать свойства для получения состояния объекта.
  16. Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, выводящим информацию о фигуре на экран. Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра.Создать массив n фигур и вывести полную информацию о фигурах на экран.
  17. Класс Покупатель: Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки, Номер банковского счета; Конструктор; Методы: установка значений атрибутов, получение значений атрибутов, вывод информации. Создать массив объектов данного класса. Вывести список покупателей в алфавитном порядке и список покупателей, у которых номер кредитной карточки находится в заданном диапазоне.
  18. Класс Абонент: Идентификационный номер, Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки, Дебет, Кредит, Время междугородных и городских переговоров; Конструктор; Методы: установка значений атрибутов, получение значений атрибутов, вывод информации. Создать массив объектов данного класса. Вывести сведения относительно абонентов, у которых время городских переговоров превышает заданное.  Сведения относительно абонентов, которые пользовались междугородной связью. Список абонентов в алфавитном порядке.
  19. Задача на взаимодействие между классами. Разработать систему «Автобаза». Диспетчер распределяет заявки на Рейсы между Водителями и назначает для этого Автомобиль. Водитель может сделать заявку на ремонт. Диспетчер может отстранить Водителя от работы. Водитель делает отметку о выполнении Рейса и состоянии Автомобиля. 
  20. Задача на взаимодействие между классами. Разработать систему «Железнодорожная касса». Пассажир делает заявку на станцию назначения, время и дату поездки. Система регистрирует Заявку и осуществляет поиск соответствующего Поезда. Пассажир делает выбор Поезда и получает Счет на оплату. Кассир вводит номера Поездов, промежуточные и конечные станции, цены.
  21. Задача на взаимодействие между классами. Разработать систему «Интернет-магазин». Товаровед добавляет информацию о Товаре. Клиент делает и оплачивает Заказ на Товары. Товаровед регистрирует Продажу и может занести неплательщика в «черный список».
  22. Задача на взаимодействие между классами. Разработать систему «Платежи». Клиент имеет Счет в банке и Банковскую карту (КК). Клиент может оплатить Заказ, сделать платеж на другой Счет, заблокировать КК и аннулировать Счет. Администратор может заблокировать КК за превышение платежа.
  23. Задача на взаимодействие между классами. Разработать систему «Вступительные экзамены». Абитуриент регистрируется на Факультет, сдает Экзамены. Преподаватель выставляет Оценку. Система подсчитывает средний бал и определяет Абитуриента, зачисленного в учебное заведение.
  24. Разработать класс «Калькулятор логарифмов»с возможностью сложения, вычитания, умножения, деления, возведения в степень и перехода к другому основанию. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу сообщений в случае ошибок. Протокол работы калькулятора записать в файл. Предусмотреть возможность просмотра файла из программы.
  25. Аквариум
    1. Определите объект TFish - аквариумная рыбка. Рыбка имеет координаты, скорость, размер, цвет, направление движения. Методами объекта являются:
    Init - устанавливает значения полей объекта и рисует рыбу на экране методом Draw. Draw - рисует рыбу (виртуальный метод).
    Look - проверяет несколько точек на линии движения рыбы. Если хоть одна из них отличается по цвету от воды, возвращается её цвет и расстояние до рыбы.
    Run - перемещает рыбу в текущем направлении на расстояние, зависящее от текущей скорости рыбы. Иногда случайным образом меняет направление движения рыбы. Если рыба видит препятствие, направление движения меняется, пока препятствие не исчезнет из поля зрения рыбы.
    2. Определите объект Taquarium, который является местом обитания рыб. Он представляет собой область экрана, наполненную водой.
    Методы:
    Init - включает графический режим, заполняет аквариум водой, скалами и рыбами. Run - организует бесконечный цикл, в котором выполняется метод Run всех обитателей аквариума.
    Done - выключает графический режим.
    3. Определите два объекта Tpike и Tkarp, которые наследуют объект Tfish.
    4. Карпы и щуки должны быть объединены в стаи. Стая - это связанный список рыб в динамической памяти. Для связи в объектах Tpike и Tkarp используйте поле Next - указатель на следующую рыбу в стае. Аквариум должен быть владельцем двух стай. Пользователь может пополнять стаи, вводя рыб с клавиатуры.
    5. Щуки должны поедать карпов, как только они их увидят. Необходимо установить, какого именно карпа видит щука (ближайший по координатам карп к щуке, найденный карп удаляется из стаи).
  26. Разработка приложения для предметной области «Учёт товаров в магазине»
    Разработать приложение, позволяющее собирать и накапливать сведения о поступлении и реализации товаров некоторого магазина. Структура приложения обязательно должна включать следующие классы: товар, производитель, документ, поступление товара, реализация товара и др.
  27. Разработка приложения для предметной области «Организация учебного процесса в ВУЗе»
    Разработать приложение, позволяющее собирать и накапливать сведения об организации и диспетчеризации учебного процесса в ВУЗе. Структура приложения обязательно должна включать следующие классы: академическая группа, специальность, дисциплина, аудитория, преподаватель и др.
  28. Транспортное агентство
    Разработайте программу, имитирующую работу трансагентства. Трансагентство имеет сеть филиалов в нескольких городах. Транспортировка грузов осуществляется между этими городами тремя видами транспорта: автомобильным, железнодорожным и воздушным. Любой вид транспортировки имеет стоимость единицы веса на единицу пути и скорость доставки. Воздушный транспорт можно использовать только между крупными городами, этот вид самый скоростной и самый дорогой. Кроме того, воздушный транспорт зависит от погоды. Доставить груз воздушным путем можно только при условии хорошей погоды одновременно в городах отправки и назначения. Хорошая или плохая погода задается случайным образом. Железнодорожный транспорт можно использовать между крупными и средними городами, этот вид самый дешевый. Автомобильный транспорт можно использовать между любыми городами. Заказчики через случайные промежутки времени обращаются в один из филиалов трансагентства с заказом на перевозку определенной массы груза и возможным пожеланием о скорости/цене доставки. Трансагентство организует отправку грузов одним из видов транспорта с учетом пожеланий клиента. Оплату трансагенство получает только после успешной доставки груза. Между некоторыми городами для железнодорожного и/или автомобильного транспорта имеются скоростные магистрали, на которых скорость соответствующего вида транспорта увеличивается с заданным коэффициентом. При перевозке грузов могут происходить аварии, при этом вероятность аварии на автотранспорте больше, чем на железнодорожном транспорте, а авиатранспорт имеет аварийность очень низкую. На скоростных магистралях вероятность аварии меньше, чем на обычных дорогах. При аварии трансагентство возвращает заказчику двойную стоимость перевозки.
    Процесс имитации может быть остановлен пользователем программы для просмотра параметров объектов:
     Доход трансагенства, в том числе с разбивкой по видам транспорта и городам.
     Среднее время доставки груза, в том числе с разбивкой по видам транспорта и городам.
     Потери, связанные с плохой погодой.
     Потери, связанные с аварийностью, в том числе с разбивкой по видам транспорта и по видам дорог.
     Доход на тонно-километр скоростных магистралей в сравнении с таким же доход на обычных дорогах.
     Список исполняемых заказов с возможность сортировки по городам, видам транспорта, стоимости перевозки.
     Список задерживаемых заказов в связи с плохой погодой.
    (Разработать и реализовать классы, которые являются основными в задании. Для сдачи лабораторной работы необходимо создать проект, в котором демонстрируется работа объектов созданных классов. Должны быть продемонстрированы выполнение конструктора, всех доступных методов и деструктора.)
  29. Разработать класс для работы с файлами СУБД dBase (DBF файлы). Реализовать основные операции (подключение, чтение данных, модификация данных, перемещение по записям, пометка на удаление, сжатие таблицы, добавление данных).
  30. Задача для С++. Реализуйте шаблонный класс Polynomial (Многочлен от одной переменной) на основе контейнера std::vector. Тип коэффициентов многочлена передавайте в качестве параметра шаблона. Хранение коэффициентов должно быть плотным (то есть должны храниться все коэффициенты, в том числе и промежуточные нулевые).
    Сделайте следующее:
    1) Напишите конструктор, создающий многочлен по заданному вектору коэффициентов (коэффициенты задаются от младшего к старшим).
    2) Перегрузите операторы == и !=. Ваш код должен быть очень простым.
    3) Перегрузите операторы +, - и *, а также соответствующие операторы +=, -= и *=. Учтите, что должны быть определены и такие арифметические операции, в которых один из аргументов является скаляром.
    4) Перегрузите оператор [] для получения коэффициента многочлена перед заданной степенью переменной. Оператор должен работать для любых степеней (в том числе больших текущей максимальной). Напишите также функцию Degree для вычисления степени многочлена (считайте, что у нулевого многочлена степень равна -1).
    5) Перегрузите оператор () для вычисления значения многочлена в точке. Постарайтесь написать эффективный код.
    6) Перегрузите оператор << для печати многочлена в поток вывода. При этом следует учитывать знаки коэффициентов, совпадение коэффициентов с 1 или -1, степень монома и т. д. Печататься должны только ненулевые коэффициенты многочлена начиная со старшей степени. Пример формата вывода: -x^3+4x^2+x-1.
    7) Предусмотрите функции для доступа к константным итераторам, позволяющим перебрать коэффициенты многочлена (это могут быть просто итераторы вектора).
    8) Перегрузите операторы / и % для вычисления неполного частного и остатка от деления многочленов (считайте, что в этом случае деление коэффициентов допустимо). Перегрузите также оператор "запятая" для вычисления наибольшего общего делителя. Так как НОД многочленов определен с точностью до обратимого коэффициента, считайте, что его старший коэффициент равен единице. Считайте также, что все операции деления над коэффициентами выполняются точно.
  31. Создать класс машина, имеющий марку (указатель на строку) , число цилиндров, мощность. Определить конструкторы, деструктор и функцию печати. Создать public- производный класс – грузовики, имеющий грузоподъемность кузова. Определить конструкторы по умолчанию и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения марки и грузоподъемности.