Составить программу, выводящую на экран расписание полетов самолетов C++

Рейтинг: -4Ответов: 1Опубликовано: 30.05.2023

Составить программу, выводящую на экран расписание полетов самолетов (пункт посадки, время отправления, время прибытия, время полета, стоимость билета). Определить номер рейса, который позже всех прибывает в заданный пункт. Не могу понять как вывести номер рейса который позже всех прибывает ввожу Moscow и выдает 12 часов, а должен 16.

#include <iostream>
#include <conio.h>
#include <algorithm>

using namespace std;

//Классы, по сути это такой же тип данных как int или float, возможности которых 
//ты определяешь в этом районе объявления классов, то есть после объявления класса
//с названием "Aircraft", мы можем создавать переменные Aircraft a, b, c как
//int a, b, c
class Aircraft
{
    //private, параметры и функции класса, которые видно только в пределах класса
    //Aircraft, то есть если объявить в пределах int main Aircraft a, то при написании
    //a.lp или a.dp, выведется ошибка
private:
    string lp, dp;
    int tl, ft, bc, td, fn;
    //public, параметры и функции класса, которые видно НЕ только в пределах класса
    //Aircraft, то есть если объявить в пределах int main Aircraft a, то при написании
    //a.lp или a.dp, ошибка выводится не будет, а перменная a.dp выведет своё значение
public:
    //Когда в основном коде пишем объявление переменной Aircraft a(a1,a2,a3)
    //то на месте a1 будет перменная string, на месте a2 переменная int, ну и так
    //далее, сопоставь эту функцию снизу под комментарием и 3 параметра при 
    //объявлении Aircraft чтобы понять
    Aircraft (string landing_place, string departure_place, int time_departure, int time_landing, int flying_time,  int bilet_cost, int flight_number)
    {
        lp = landing_place;
        dp = departure_place;
        tl = time_landing;
        ft = flying_time;
        bc = bilet_cost;
        td = time_departure;
        fn = flight_number;
    }
    string getLanding_Place_Name()
    {
        return lp;
    }
    string getDepartue_Place_Name()
    {
        return dp;
    }
    int getTime_Departue()
    {
        return td;
    }
    int getTime_Landing()
    {
        return tl;
    }
    int getFlying_Time()
    {
        return ft;
    }
    int getBilet_Cost()
    {
        return bc;
    }
    int getFlight_Number()
    {
        return fn;
    }
};

int main()
{
    setlocale(LC_ALL, "Russian");

    Aircraft Fly1("Saint-Petesburg", "Moscow", 10, 12, 2, 34000, 1), Fly2("Ufa", "Moscow", 12, 16, 4, 45000, 2),
        Fly3("Saint-Petesburg", "Ufa", 13, 18, 5, 26000, 3);

        //Вывод имеющихся данных
        cout << Fly1.getLanding_Place_Name() << endl;
    cout << Fly1.getDepartue_Place_Name() << endl;
    cout << "Убытие: " << Fly1.getTime_Departue() << " часов" << endl;
    cout << "Прибытие: " << Fly1.getTime_Landing() << " часов" << endl;
    cout << "Лететь: " << Fly1.getFlying_Time() << " часа" << endl;
    cout << Fly1.getBilet_Cost() << " рублей" << endl;
    cout << Fly1.getFlight_Number() << " - й рейс" << endl;

    cout << endl;

    cout << Fly2.getLanding_Place_Name() << endl;
    cout << Fly2.getDepartue_Place_Name() << endl;
    cout << "Убытие: " << Fly2.getTime_Departue() << " часов" << endl;
    cout << "Прибытие: " << Fly2.getTime_Landing() << " часов" << endl;
    cout << "Лететь: " << Fly2.getFlying_Time() << " часа" << endl;
    cout << Fly2.getBilet_Cost() << " рублей" << endl;
    cout << Fly2.getFlight_Number() << " - й рейс" << endl;

    cout << endl;

    cout << Fly3.getLanding_Place_Name() << endl;
    cout << Fly3.getDepartue_Place_Name() << endl;
    cout << "Убытие: " << Fly3.getTime_Departue() << " часов" << endl;
    cout << "Прибытие: " << Fly3.getTime_Landing() << " часов" << endl;
    cout << "Лететь: " << Fly3.getFlying_Time() << " часов" << endl;
    cout << Fly3.getBilet_Cost() << " рублей" << endl;
    cout << Fly3.getFlight_Number() << " - й рейс" << endl;

    cout << endl;

    string departure_place;
    int flight_number;

    cout << "Введите название города куда будет садиться самолёт: ";
    cin >> departure_place;
    cout << endl;

    //25 взято за минимальное число, потому что число по логике не может быть больше 24
    int min = 25;


    //Поиск номера рейса в заданный город которого прибытие будет позже всего
    if (Fly3.getDepartue_Place_Name() == departure_place)
    {
        if (min >  Fly3.getTime_Landing())
        {
            min = Fly3.getTime_Landing();
            flight_number = Fly3.getFlight_Number();
        }
    }

    if (Fly2.getDepartue_Place_Name() == departure_place)
    {
        if (min >  Fly2.getTime_Landing())
        {
            min = Fly2.getTime_Landing();
            flight_number = Fly2.getFlight_Number();
        }
    }

    if (Fly1.getDepartue_Place_Name() == departure_place)
    {
        if (min > Fly1.getTime_Landing())
        {
            min = Fly1.getTime_Landing();
            flight_number = Fly1.getFlight_Number();
        }
    }

    cout << "В город " << departure_place << " самолёт прибудет в " << min << endl;
    cout << "Номер рейса " << flight_number;

    _getch();
    return 0;
}

Ответы

▲ 1

Помогает сделать правильно - искать МАКСИМУМ, а не минимум, как это делаете вы. Поменять 25 на -1, скажем, и три знака "больше" на "меньше". Вы, вероятно, потянули чужой код и даже не поняли, что min ищет минимум?...

int min = -1;


//Поиск номера рейса в заданный город которого прибытие будет позже всего
if (Fly3.getDepartue_Place_Name() == departure_place)
{
    if (min < Fly3.getTime_Landing())
    {
        min = Fly3.getTime_Landing();
        flight_number = Fly3.getFlight_Number();
    }
}

if (Fly2.getDepartue_Place_Name() == departure_place)
{
    if (min <  Fly2.getTime_Landing())
    {
        min = Fly2.getTime_Landing();
        flight_number = Fly2.getFlight_Number();
    }
}

if (Fly1.getDepartue_Place_Name() == departure_place)
{
    if (min < Fly1.getTime_Landing())
    {
        min = Fly1.getTime_Landing();
        flight_number = Fly1.getFlight_Number();
    }
}