Загрузка данных


#include <iostream>

struct Car {
    // 1. Поля структуры (символьные указатели const char*)
    const char* brand;       // Марка
    const char* color;       // Цвет
    const char* bodyType;    // Тип кузова
    double engineVolume;     // Объем двигателя (л)
    int mileage;             // Пробег (км)

    // 2. Методы структуры

    // Расчет среднего расхода топлива на 100 км
    double calculateFuelConsumption(double distance) {
        if (distance <= 0) return 0.0;
        return (engineVolume / distance) * 100.0;
    }

    // Уменьшение пробега
    void reduceMileage(int km) {
        if (km > 0 && km <= mileage) {
            mileage -= km;
        }
    }

    // Вывод данных в консоль
    void printInfo() const {
        std::cout << "Марка: " << brand << "\n"
                  << "Цвет: " << color << "\n"
                  << "Тип кузова: " << bodyType << "\n"
                  << "Объем двигателя: " << engineVolume << " л\n"
                  << "Пробег: " << mileage << " км\n"
                  << "-----------------------------------\n";
    }
};

int main() {
    // 3. Создание объектов

    // Статический объект
    Car staticCar = {"Toyota", "Черный", "Седан", 2.0, 150000};

    std::cout << "=== Статический объект ===\n";
    staticCar.printInfo();
    std::cout << "Расход на 100 км (при дистанции 25 км): " 
              << staticCar.calculateFuelConsumption(25) << " л\n";
    staticCar.reduceMileage(5000);
    std::cout << "Пробег после уменьшения: " << staticCar.mileage << " км\n\n";

    // Динамический объект
    Car* dynamicCar = new Car{"BMW", "Белый", "Внедорожник", 3.0, 80000};

    std::cout << "=== Динамический объект ===\n";
    dynamicCar->printInfo();
    std::cout << "Расход на 100 км (при дистанции 30 км): " 
              << dynamicCar->calculateFuelConsumption(30) << " л\n";
    dynamicCar->reduceMileage(10000);
    std::cout << "Пробег после уменьшения: " << dynamicCar->mileage << " км\n";

    // Освобождение памяти
    delete dynamicCar;

    return 0;
}