Загрузка данных
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;
}