Поясните пожалуйста код С++ int main() { train* arrayOfTrain[5]; for (int i = 0; i < 5;...

0 голосов
34 просмотров

Поясните пожалуйста код С++ 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; }


Информатика (24 баллов) | 34 просмотров
0

Странный вы человек, не проще ли было спросить сразу у меня? У человека, который все это написал?

0

Поддерживаю. В вопросе отсутствует часть кода (а именно описание структуры train), что затрудняет объяснение (в иных случаях отсутствие блока кода может сделать это невозможным).

Дан 1 ответ
0 голосов

Ответ:

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

}

system("pause");

return 0;

}

(2.5k баллов)