Поясните код С++
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;
}

BestPe BestPe    2   12.04.2020 17:27    0

Ответы
cheknutyi cheknutyi  13.10.2020 03:02

int main()

{

train* arrayOfTrain[5];  // создается массив указателей на объекты train

// в следующем цикле у пользователя запрашивается заполнение пяти объектов train

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

{

string punkt;

int trainNumber;

Time startTime;

cin >> punkt;  // ввод пункта

cin >> trainNumber;  // ввод номера поезда

cin >> startTime;  // ввод времени

// в следующей строке выделяется память под объект train, ему присваиваются введенные данные

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

}

// сортировка массива по длине названия пункта назначения

// ( функция strcmp сравнивает длины строк )

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;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика