Advertisement
Shpindlier

Untitled

Nov 29th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.27 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // Вспомогательный класс Рейс
  5. class Flight {
  6. private:
  7.     double ticketPrice;  // Цена билета
  8.     int capacity;        // Вместимость пассажиров
  9.  
  10. public:
  11.     // Инициализация
  12.     void Init(double price, int cap) {
  13.         ticketPrice = price;
  14.         capacity = cap;
  15.     }
  16.  
  17.     // Вычисление ожидаемого дохода
  18.     double ExpectedIncome() const {
  19.         return ticketPrice * capacity;
  20.     }
  21.  
  22.     // Вывод информации о рейсе
  23.     void Display() const {
  24.         cout << "Цена билета: " << ticketPrice << ", Вместимость: " << capacity
  25.              << ", Ожидаемый доход: " << ExpectedIncome() << endl;
  26.     }
  27. };
  28.  
  29. // Основной класс Маршрут
  30. class Route {
  31. private:
  32.     Flight flights[3];        // Три рейса
  33.     int loadPercent[3];       // Процент наполненности пассажирами
  34.  
  35. public:
  36.     // Инициализация маршрута
  37.     void Init(const Flight &f1, const Flight &f2, const Flight &f3, int p1, int p2, int p3) {
  38.         flights[0] = f1;
  39.         flights[1] = f2;
  40.         flights[2] = f3;
  41.         loadPercent[0] = p1;
  42.         loadPercent[1] = p2;
  43.         loadPercent[2] = p3;
  44.     }
  45.  
  46.     // Вычисление реального дохода от всех рейсов
  47.     double RealIncome() const {
  48.         double totalIncome = 0;
  49.         for (int i = 0; i < 3; i++) {
  50.             totalIncome += flights[i].ExpectedIncome() * loadPercent[i] / 100.0;
  51.         }
  52.         return totalIncome;
  53.     }
  54.  
  55.     // Нахождение рейса с максимальным ожидаемым доходом
  56.     int MaxExpectedIncomeFlight() const {
  57.         int maxIndex = 0;
  58.         for (int i = 1; i < 3; i++) {
  59.             if (flights[i].ExpectedIncome() > flights[maxIndex].ExpectedIncome()) {
  60.                 maxIndex = i;
  61.             }
  62.         }
  63.         return maxIndex;
  64.     }
  65.  
  66.     // Вывод информации о маршруте
  67.     void Display() const {
  68.         cout << "Информация о рейсах:\n";
  69.         for (int i = 0; i < 3; i++) {
  70.             cout << "Рейс " << i + 1 << " (наполненность " << loadPercent[i] << "%):\n";
  71.             flights[i].Display();
  72.         }
  73.         cout << "Общий реальный доход: " << RealIncome() << endl;
  74.         int maxIndex = MaxExpectedIncomeFlight();
  75.         cout << "Рейс с наибольшим ожидаемым доходом: " << maxIndex + 1 << endl;
  76.     }
  77. };
  78.  
  79. // Пример использования
  80. int main() {
  81.     // Создание трех рейсов
  82.     Flight f1, f2, f3;
  83.     f1.Init(100.0, 150);  // Цена билета 100, вместимость 150
  84.     f2.Init(200.0, 100);  // Цена билета 200, вместимость 100
  85.     f3.Init(150.0, 120);  // Цена билета 150, вместимость 120
  86.  
  87.     // Создание маршрута
  88.     Route route;
  89.     route.Init(f1, f2, f3, 80, 50, 90);  // Наполненность рейсов: 80%, 50%, 90%
  90.  
  91.     // Вывод информации о маршруте
  92.     route.Display();
  93.  
  94.     return 0;
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement