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


H:

#ifndef CAR_H
#define CAR_H

#include <string>

class Car {
private:
    std::string brand;
    std::string color;
    std::string bodyType;
    double engineVolume;
    int mileage;

public:
    Car();
    void setData(const std::string& brand, const std::string& color,
                 const std::string& bodyType, double engineVolume, int mileage);
    int getMileage() const;
    double calculateFuelConsumption(double distance) const;
    void reduceMileage(int km);
    void printInfo() const;
};

#endif




Cp:

#include "Car.h"
#include <iostream>

Car::Car() : engineVolume(1.0), mileage(0) {}

void Car::setData(const std::string& brand, const std::string& color,
                  const std::string& bodyType, double engineVolume, int mileage) {
    if (brand.empty() || color.empty() || bodyType.empty() ||
        engineVolume <= 0 || mileage < 0) {
        return;
    }
    this->brand = brand;
    this->color = color;
    this->bodyType = bodyType;
    this->engineVolume = engineVolume;
    this->mileage = mileage;
}

int Car::getMileage() const {
    return mileage;
}

double Car::calculateFuelConsumption(double distance) const {
    if (distance <= 0) return 0.0;
    return (engineVolume / distance) * 100.0;
}

void Car::reduceMileage(int km) {
    if (km > 0 && km <= mileage) {
        mileage -= km;
    }
}

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





Main.cp

#include <iostream>
#include "Car.h"

int main() {
    // Статический объект
    std::cout << "=== Статический объект ===\n";
    Car staticCar;
    staticCar.setData("Toyota", "Черный", "Седан", 2.0, 150000);
    staticCar.printInfo();
    std::cout << "Расход на 100 км (25 км): " << staticCar.calculateFuelConsumption(25) << " л\n";
    staticCar.reduceMileage(5000);
    std::cout << "Пробег после уменьшения: " << staticCar.getMileage() << " км\n\n";

    // Динамический объект
    std::cout << "=== Динамический объект ===\n";
    Car* dynamicCar = new Car;
    dynamicCar->setData("BMW", "Белый", "Внедорожник", 3.0, 80000);
    dynamicCar->printInfo();
    std::cout << "Расход на 100 км (30 км): " << dynamicCar->calculateFuelConsumption(30) << " л\n";
    dynamicCar->reduceMileage(10000);
    std::cout << "Пробег после уменьшения: " << dynamicCar->getMileage() << " км\n\n";

    // Проверка ограничений
    std::cout << "=== Неверные данные ===\n";
    dynamicCar->setData("Audi", "Красный", "Купе", -2.0, 100);
    dynamicCar->printInfo();
    dynamicCar->reduceMileage(999999);
    std::cout << "Пробег после reduceMileage(999999): " << dynamicCar->getMileage() << " км\n";
    std::cout << "calculateFuelConsumption(0): " << dynamicCar->calculateFuelConsumption(0) << "\n\n";
    delete dynamicCar;

    // Статический массив
    std::cout << "=== Статический массив ===\n";
    Car staticArr[2];
    staticArr[0].setData("Honda", "Синий", "Хэтчбек", 1.5, 40000);
    staticArr[1].setData("Kia", "Красный", "Седан", 1.6, 70000);
    for (int i = 0; i < 2; i++) {
        staticArr[i].printInfo();
        std::cout << "Расход на 100 км (50 км): " << staticArr[i].calculateFuelConsumption(50) << " л\n";
        staticArr[i].reduceMileage(1000);
        std::cout << "Пробег после уменьшения: " << staticArr[i].getMileage() << " км\n\n";
    }

    // Динамический массив
    std::cout << "=== Динамический массив ===\n";
    int n = 2;
    Car* dynamicArr = new Car[n];
    dynamicArr[0].setData("Lada", "Белый", "Седан", 1.6, 90000);
    dynamicArr[1].setData("Nissan", "Серый", "Кроссовер", 2.0, 55000);
    for (int i = 0; i < n; i++) {
        dynamicArr[i].printInfo();
        std::cout << "Расход на 100 км (40 км): " << dynamicArr[i].calculateFuelConsumption(40) << " л\n";
        dynamicArr[i].reduceMileage(2000);
        std::cout << "Пробег после уменьшения: " << dynamicArr[i].getMileage() << " км\n\n";
    }
    delete[] dynamicArr;

    return 0;
}