Переставить слои местами

317
14 февраля 2017, 19:26

Какие возможности есть по следующему заданию???

// массивы. Проинициализируйте трехмерный массив
//double dArray[4][3][3] так, как показано на рисунке и напишите фрагмент
//кода, который меняет местами значения элементов четных
//и нечетных слоев:
//  было:                |--------|     
//                     / |4  4  4 |     
//                   |--------| 4 | 
//                 / |3  3  3 | 4 | 
//               |---------|3 |   |
//             / | 2  2  2 |3 | /
//            |---------|2 |__|
//            | 1  1  1 |2 | /
//            | 1  1  1 |__| 
//            | 1  1  1 | /
//            |_________|
//  стало:               |--------|     
//                     / |3  3  3 |     
//                   |--------| 3 | 
//                 / |4  4  4 | 3 | 
//               |---------|4 |   |
//             / | 1  1  1 |4 | /
//            |---------|1 |__|
//            | 2  2  2 |1 | /
//            | 2  2  2 |__| 
//            | 2  2  2 | /
//            |_________|
for(int i=0; i<...; ...)
{
//Замечание: НЕ НУЖНО МОДИФИЦИРОВАТЬ ВЫРАЖЕНИЯ СПРАВА ОТ ЗНАКА РАВЕНСТВА!!!
    ... =  dArray[i];
    ... =  dArray[i+1];
    //переставляем местами элементы i-того и i+1-ого слоев

}
Answer 1

Если "с добавлением недостающего кода", то, например, так

for (int i = 0; i + 1 < 4; i += 2)
{
   auto &even_layer = dArray[i];
   auto &odd_layer = dArray[i+1];
   std::swap(even_layer, odd_layer);
 }

или, чтобы абстрагироваться от константы 4

for  (int i = 0; i + 1 < std::extent<decltype(dArray)>::value; i += 2)
  ...

Разумеется, если задаться целью вписывать код только в многоточия, то можно "скрипя сердцем" изрыгнуть что-то вроде

for (int i = 0; i + 1 < std::extent<decltype(dArray)>::value; i += 2)
{
  auto dummy = dArray[i];
  (std::swap(dArray[i], dArray[i + 1]), dummy) = dArray[i + 1];
}

Но я сомневаюсь, что в этом есть смысл.

READ ALSO
Как сравнить char и string c++?

Как сравнить char и string c++?

Имеется такой код:

444
Частотный анализ текста c++

Частотный анализ текста c++

Решил я написать частотный анализ текста на c++Возникли следующие проблемы: Русские символы нужны на всех платформах(linux, mac os, windows), поэтому...

291
Не работают плагины для OpenCPN [требует правки]

Не работают плагины для OpenCPN [требует правки]

Нужно написать плагин для OpenCPN, но поскольку не нашел ни одного пособия, то решил разобраться на примере исходного кода существующихНо после...

286