/
plato
/
RaceProject
Обзор
Документация
Войти
/
plato
/
RaceProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lib/src/Race.cpp
63 строки
2 KB
Evanivan
feat: program almost done
09 дек 2025, 22:04
09 дек 2025, 22:04
e9ce965
Код
Авторство
О чём код?
#include "Race.h" #include <algorithm> Race::Race(Type t, double dist) : type(t), distance(dist) {} bool Race::registerVehicle(std::shared_ptr<Vehicle> vehicle) { std::string vehicleType = vehicle->getType(); if ((type == Type::GROUND && vehicleType != "Ground") || (type == Type::AIR && vehicleType != "Air")) { return false; } for (const auto& v : vehicles) { if (v->getName() == vehicle->getName()) { return false; } } vehicles.push_back(vehicle); return true; } std::vector<std::pair<std::string, double>> Race::startRace() const { std::vector<std::pair<std::string, double>> results; for (const auto& vehicle : vehicles) { double time = vehicle->calculateTime(distance); results.emplace_back(vehicle->getName(), time); } // Сортируем по времени (возрастание) std::sort(results.begin(), results.end(), [](const auto& a, const auto& b) { return a.second < b.second; }); return results; } Race::Type Race::getType() const { return type; } double Race::getDistance() const { return distance; } int Race::getVehicleCount() const { return vehicles.size(); } const std::vector<std::shared_ptr<Vehicle>>& Race::getVehicles() const { return vehicles; } std::string Race::typeToString(Type type) { switch (type) { case Type::GROUND: return "Только для наземных ТС"; case Type::AIR: return "Только для воздушных ТС"; case Type::MIXED: return "Для наземных и воздушных ТС"; default: return "Неизвестный тип"; } }