Объяснение:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
using namespace std;
struct Train { // указатель на узел, динамическую структуру Train
int number; //ввод поля номер для поезда
char path[10];// ввод поля пункт назначения поезда
int hour;// ввод поля время отправления поезда (часы)
int min; //ввод поля время отправления поезда (минуты стандартных имён
int main() {
const int N = 5;
setlocale(LC_ALL, "Russian");// подключение русского языка
Train trains[5];// указание количества поездов в структуре
for (int i = 0; i < N; i++) { // начало цикла для введения данных о 5 поездах
cout << "Введите пункт назначения поезда " << i + 1 << endl; // Вывод на экран сообщения о необходимости ввести имя
cin >> trains[ i ].path ; //ввод имени пользователем
cout << "Введите номер для поезда " << i + 1 << endl;
cin >> trains[ i ].number;
cout << "Введите время отправления для поезда (часы) " << i + 1 << endl;
cin >> trains[ i ].hour ;
cout << "Введите время отправления для поезда (минуты) " << i + 1 << endl;
cin >> trains[ i ].min ;
}
for(int i = 0; i < N; i++)
{
for(int j = i + 1; j < N; j++)
if(strcmp(trains[i].path, trains[j].path)>0)
Train tmp = trains[i];
trains[i] = trains[j];
trains[j] = tmp;
for (int i = 0; i < N; ++i)
cout << " Пункт назначения: " << trains[ i ].path << " номер: " << trains[ i ].number << " Время отправления: " << trains[ i ].hour << ":" << trains[ i ].min << endl << endl;
int time_h;
int time_min;
int k = 0;
cout << "Введите ваше время (часы затем минуты)" << endl;
cin >> time_h >> time_min;
cout << " Ваше время:" << time_h <<":" << time_min << endl << endl;
if((time_h < trains[i].hour) || (time_h == trains[i].hour && time_min < trains[i].min))
cout << " следующие поезда отправятся после вашего времени: " << trains[i].number <<" с временем "<< trains[i].hour << ":"<< trains[i].min << endl;
k++;
if(k == 0)
cout << " Нет подходящих поездов" << endl;
_getch();
return 0;
Исходник прикреплю в закреп, в двух форматах на всякий!!
#include <string>
#include <ctime>
class Time {
public:
Time()
: m_hours(0), m_minutes(0) {
//TODO
Time(short hours, short minutes)
: m_hours(hours), m_minutes(minutes) {
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 << 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
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++)
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]);
if (strcmp(arrayOfTrain[i]->punkt.c_str(), arrayOfTrain[j]->punkt.c_str()) == 0)
if (arrayOfTrain[i]->startTime.m_hours > arrayOfTrain[j] -> startTime.m_hours)
if (arrayOfTrain[i]->startTime.m_hours == arrayOfTrain[j] -> startTime.m_hours)
if (arrayOfTrain[i] -> startTime.m_minutes > arrayOfTrain[j] -> startTime.m_minutes)
cout << arrayOfTrain[i]->punkt << " " << arrayOfTrain[i]->trainNumber << " " << arrayOfTrain[i]->startTime << endl;
system("pause");
Объяснение:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
using namespace std;
struct Train { // указатель на узел, динамическую структуру Train
int number; //ввод поля номер для поезда
char path[10];// ввод поля пункт назначения поезда
int hour;// ввод поля время отправления поезда (часы)
int min; //ввод поля время отправления поезда (минуты стандартных имён
int main() {
const int N = 5;
setlocale(LC_ALL, "Russian");// подключение русского языка
Train trains[5];// указание количества поездов в структуре
for (int i = 0; i < N; i++) { // начало цикла для введения данных о 5 поездах
cout << "Введите пункт назначения поезда " << i + 1 << endl; // Вывод на экран сообщения о необходимости ввести имя
cin >> trains[ i ].path ; //ввод имени пользователем
cout << "Введите номер для поезда " << i + 1 << endl;
cin >> trains[ i ].number;
cout << "Введите время отправления для поезда (часы) " << i + 1 << endl;
cin >> trains[ i ].hour ;
cout << "Введите время отправления для поезда (минуты) " << i + 1 << endl;
cin >> trains[ i ].min ;
}
for(int i = 0; i < N; i++)
{
for(int j = i + 1; j < N; j++)
{
if(strcmp(trains[i].path, trains[j].path)>0)
{
Train tmp = trains[i];
trains[i] = trains[j];
trains[j] = tmp;
}
}
}
for (int i = 0; i < N; ++i)
{
cout << " Пункт назначения: " << trains[ i ].path << " номер: " << trains[ i ].number << " Время отправления: " << trains[ i ].hour << ":" << trains[ i ].min << endl << endl;
}
int time_h;
int time_min;
int k = 0;
cout << "Введите ваше время (часы затем минуты)" << endl;
cin >> time_h >> time_min;
cout << " Ваше время:" << time_h <<":" << time_min << endl << endl;
for(int i = 0; i < N; i++)
{
if((time_h < trains[i].hour) || (time_h == trains[i].hour && time_min < trains[i].min))
{
cout << " следующие поезда отправятся после вашего времени: " << trains[i].number <<" с временем "<< trains[i].hour << ":"<< trains[i].min << endl;
k++;
}
}
if(k == 0)
cout << " Нет подходящих поездов" << endl;
_getch();
return 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;
}