Advertisement
coloriot

HA13

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