Разработайте классы Автомобиль и КоннаяПовозка. Потребление топлива двигателем автомобиля зависит от массы автомобиля и типа топлива (бензин, газ, дизель). Конная повозка включает одного или несколько коней. При движении каждый конь устаёт с некоторой индивидуальной скоростью, зависящей от массы повозки. Добавьте метод перемещения на заданное расстояние в классы Автомобиль и КоннаяПовозка, возвращающий фактически пройденное расстояние. Автомобиль не может двигаться без топлива. Конная повозка останавливается, если хотя бы один конь окончательно устал.
Разработайте класс, позволяющий проводить соревнования между несколькими транспортными средствами. В каждое Соревнование можно добавлять участников и удалять их из него. Есть метод проведения соревнования, возвращающий участников в порядке финиширования и расстояния, на которые они смогли переместиться.
Автомобиль
Атрибуты: масса, объём топливного бака, тип топлива.
Методы: получения массы, получения объёма топливного бака, получения типа топлива, расчёта фактически пройденного расстояния.
КоннаяПовозка
Атрибуты: масса, массив индивидуальных характеристик коней.
Методы: получения массы, добавления коня (его индивидуальной характеристики), получения их количества, получения и удаления коня по номеру, расчёта фактически пройденного расстояния.
Класс Результат
Атрибуты: участник, место, расстояние.
Методы: получения участника, получения места, получения расстояния.
Соревнование
Атрибуты: массив Автомобилей, массив Повозок
Методы: проведения соревнование на заданное расстояние, добавления Автомобиля, получения их количества, получения Автомобиля по индексу, удаления Автомобиля по индексу, добавления КоннойПовозки, получения их количества, получения КоннойПовозки по индексу, удаления КоннойПовозки по индексу.
Выполнить перепроектирование (рефакторинг) исходного кода предыдущей ЛР: определить базовые классы, построить иерархии наследования, объединить/заменить старые методы. При работе с объектами одной иерархии классов вы должны пользоваться как можно более абстрактным классом из имеющихся, а поэтому и полиморфизмом подтипов. Теперь вместо ручного хранения объектов в массивах и управления памятью используйте контейнеры (коллекции). Какие-то контейнеры накладывают определённые ограничения на хранящиеся в них элементы, другие отличаются скоростью доступа к элементам, третьи отличаются интерфейсом и т.д.
Необходимо выбрать STL-контейнер (https://ru.cppreference.com/w/cpp/container), который наиболее подходит в вашем случае. Обоснуйте свой выбор. Статические и динамические массивы ([], new T[SIZE]) использовать запрещено. Стандартные контейнеры безопаснее и выполняют работу с динамической памятью за вас. Если в задании сказано "список чего-то", это не значит, что можно использовать только std::list.
Написать на с++.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |