Advertisement
coloriot

HA13_V2

Jul 5th, 2024
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. // Теперь в класс добавлены геттеры для вызова
  4. class Car {
  5. private:
  6.     char make[100];
  7.     int cost;
  8.     int weight;
  9.  
  10. public:
  11.     // Конструктор для инициализации класса
  12.     Car() : cost(0), weight(0) {
  13.         make[0] = '\0';
  14.     }
  15.  
  16.     // Конструктор для заполнения параметров
  17.     Car(const char* make, int cost, int weight) {
  18.         strncpy(this->make, make, sizeof(this->make) - 1);
  19.         this->make[sizeof(this->make) - 1] = '\0';
  20.         this->cost = cost;
  21.         this->weight = weight;
  22.     }
  23.  
  24.     // Геттеры для вызова
  25.     const char* getMake() const {
  26.         return make;
  27.     }
  28.  
  29.     int getCost() const {
  30.         return cost;
  31.     }
  32.  
  33.     int getWeight() const {
  34.         return weight;
  35.     }
  36. };
  37.  
  38. // Функция чуть изменилась и теперь на геттерах
  39. bool is_more_expensive(const Car& car1, const Car& car2) {
  40.     return car1.getCost() > car2.getCost();
  41. }
  42.  
  43. void find_most_expensive_cars(Car cars[], int n) {
  44.     Car* most_expensive[100]; // Массив для хранения самых дорогих автомобилей каждой марки
  45.     int brand_count = 0; // Счетчик для уникальных брендов
  46.  
  47.     for (int i = 0; i < n; ++i) {
  48.         bool found = false;
  49.         for (int j = 0; j < brand_count; ++j) {
  50.             if (strcmp(cars[i].getMake(), most_expensive[j]->getMake()) == 0) {
  51.                 if (is_more_expensive(cars[i], *most_expensive[j])) {
  52.                     most_expensive[j] = &cars[i];
  53.                 }
  54.                 found = true;
  55.                 break;
  56.             }
  57.         }
  58.         if (!found) {
  59.             most_expensive[brand_count] = &cars[i];
  60.             ++brand_count;
  61.         }
  62.     }
  63.  
  64.     std::cout << "The most expensive cars among the presented brands:\n";
  65.     for (int i = 0; i < brand_count; ++i) {
  66.         std::cout << most_expensive[i]->getMake() << " - " << most_expensive[i]->getCost() << std::endl;
  67.     }
  68. }
  69.  
  70. int main() {
  71.     int n;
  72.     std::cout << "Enter the number of cars: ";
  73.     std::cin >> n;
  74.  
  75.     Car* cars = new Car[n];
  76.  
  77.     for (int i = 0; i < n; ++i) {
  78.         char make[100];
  79.         int cost, weight;
  80.         std::cin >> make >> weight >> cost;
  81.         cars[i] = Car(make, cost, weight);
  82.     }
  83.  
  84.     find_most_expensive_cars(cars, n);
  85.  
  86.     delete[] cars;
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement