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

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

Ответ:
Исходник прикреплю в закреп, в двух форматах на всякий!!
Объяснение:
#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;
}





Конечно, я помогу вам создать класс 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;
}
Обратите внимание, что этот код представляет собой пример решения и может быть улучшен с точки зрения обработки ошибок и ввода данных.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili