Вопрос задан 10.07.2023 в 21:16. Предмет Информатика. Спрашивает Кобяков Денис.

C++ Помогите решить эту задачу, не скидывайте похожую которую найдете в инете Создать класс

Train, содержащий поля : название пункта назначения номер поезда время отправления Вести данные в массив из 5 элементов типа Train, упорядочить элементы по номерам поездов. Добавить возможность ввода информации о поезде, номер которого введен пользователем. Добавить возможность сортировки массива по пункту назначения, причем поезда с одинаковыми пунктами назначения должны быть упорядочены по времени отправления.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Баташев Никита.

Ответ:

Исходник прикреплю в закреп, в двух форматах на всякий!!

Объяснение:

#include <iostream>

#include <string>

#include <ctime>

using namespace std;

class Time {

public:

Time()

 : m_hours(0), m_minutes(0) {

 //TODO

}

Time(short hours, short minutes)

 : m_hours(hours), m_minutes(minutes) {

 //TODO

}

Time operator-(const Time& time) {

 Time tempTime;

 tempTime.m_minutes = this->m_minutes - time.m_minutes;

 if (tempTime.m_minutes < 0) {

  tempTime.m_minutes += 60;

 }

 tempTime.m_hours = this->m_hours - time.m_hours;

 if (tempTime.m_hours < 0) {

  tempTime.m_hours += 23;

 }

 return tempTime;

}

friend std::ostream& operator<<(std::ostream& os, const Time& time);

friend std::istream& operator>>(std::istream& is, Time& time);

short m_hours;

short m_minutes;

};

std::ostream& operator<<(std::ostream& os, const Time& time) {

if (time.m_hours < 10) {

 os<< "0";

}

os<< time.m_hours << ":";

if (time.m_minutes < 10) {

 os<< "0";

}

os << time.m_minutes;

return os;

}

std::istream& operator>>(std::istream& is, Time& time) {

char delim{ ':' };

is >> time.m_hours >> delim >> time.m_minutes;

if (time.m_hours > 23) {

 time.m_hours %= 24;

}

if (time.m_minutes > 59) {

 time.m_minutes %= 60;

}

return is;

}

class train

{

public:

string punkt;

int trainNumber;

Time startTime;

train(string punkt1, int trainNumber1, Time startTime1)

{

 punkt = punkt1;

 trainNumber = trainNumber1;

 startTime = startTime1;

}

};

int main()

{

train* arrayOfTrain[5];

for (int i = 0; i < 5; i++)

{

 string punkt;

 int trainNumber;

 Time startTime;

 cin >> punkt;

 cin >> trainNumber;

 cin >> startTime;

 arrayOfTrain[i] = new train(punkt, trainNumber, startTime);

}

//Сортировка

for (int i = 0; i < 5 - 1; i++)

 for (int j = i + 1; j < 5; j++) {

  if (strcmp(arrayOfTrain[i]->punkt.c_str(), arrayOfTrain[j]->punkt.c_str()) > 0)

  {

   swap(arrayOfTrain[i], arrayOfTrain[j]);

  }

 }

for (int i = 0; i < 5 - 1; i++)

 for (int j = i + 1; j < 5; j++) {

  if (strcmp(arrayOfTrain[i]->punkt.c_str(), arrayOfTrain[j]->punkt.c_str()) == 0)

  {

   if (arrayOfTrain[i]->startTime.m_hours > arrayOfTrain[j] -> startTime.m_hours)

    swap(arrayOfTrain[i], arrayOfTrain[j]);

   if (arrayOfTrain[i]->startTime.m_hours == arrayOfTrain[j] -> startTime.m_hours)

    if (arrayOfTrain[i] -> startTime.m_minutes > arrayOfTrain[j] -> startTime.m_minutes)

     swap(arrayOfTrain[i], arrayOfTrain[j]);

  }

 }

for (int i = 0; i < 5; i++)

{

 cout << arrayOfTrain[i]->punkt << " " << arrayOfTrain[i]->trainNumber << " " << arrayOfTrain[i]->startTime << endl;

}

system("pause");

return 0;

}



0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я помогу вам создать класс Train и решить данную задачу. Вот пример решения на C++:

cpp
#include <iostream> #include <string> #include <algorithm> class Train { public: std::string destination; int trainNumber; std::string departureTime; // Конструктор класса Train Train(const std::string& dest, int num, const std::string& time) : destination(dest), trainNumber(num), departureTime(time) {} // Перегрузка оператора < для сортировки по номерам поездов bool operator<(const Train& other) const { return trainNumber < other.trainNumber; } }; int main() { const int numTrains = 5; Train trains[numTrains] = { Train("Destination3", 102, "09:30"), Train("Destination1", 101, "08:00"), Train("Destination2", 103, "10:15"), Train("Destination1", 105, "09:15"), Train("Destination2", 104, "11:00") }; // Сортировка по номерам поездов std::sort(trains, trains + numTrains); // Вывод отсортированных поездов std::cout << "Поезда, упорядоченные по номерам:" << std::endl; for (int i = 0; i < numTrains; ++i) { std::cout << "Поезд " << trains[i].trainNumber << ", пункт назначения: " << trains[i].destination << ", время отправления: " << trains[i].departureTime << std::endl; } // Ввод информации о поезде int userTrainNumber; std::cout << "Введите номер поезда для ввода информации: "; std::cin >> userTrainNumber; // Поиск поезда с введенным пользователем номером for (int i = 0; i < numTrains; ++i) { if (trains[i].trainNumber == userTrainNumber) { std::string newDestination, newDepartureTime; std::cout << "Введите новый пункт назначения: "; std::cin >> newDestination; std::cout << "Введите новое время отправления: "; std::cin >> newDepartureTime; // Обновление информации о поезде trains[i].destination = newDestination; trains[i].departureTime = newDepartureTime; std::cout << "Информация о поезде обновлена." << std::endl; break; } } // Сортировка по пункту назначения и времени отправления std::sort(trains, trains + numTrains, [](const Train& a, const Train& b) { if (a.destination == b.destination) { return a.departureTime < b.departureTime; } return a.destination < b.destination; }); // Вывод отсортированных по пункту назначения и времени отправления поездов std::cout << "Поезда, упорядоченные по пункту назначения и времени отправления:" << std::endl; for (int i = 0; i < numTrains; ++i) { std::cout << "Поезд " << trains[i].trainNumber << ", пункт назначения: " << trains[i].destination << ", время отправления: " << trains[i].departureTime << std::endl; } return 0; }

Обратите внимание, что этот код представляет собой пример решения и может быть улучшен с точки зрения обработки ошибок и ввода данных.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос