Обмен столбцов по отдельности (2D Array) C ++ - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно поменять местами элементы столбцов многомерного массива (2D Array) по отдельности, чтобы число, ближайшее к этому среднему столбцу, находилось в конце (обратном примере):

1 5 8 
4 8 7 
8 6 2 

Среднее значение первого столбца равно 4. (3) поэтому ~ 4, это означает, что мне нужно, чтобы 4 было в 3-й строке
Среднее значение по второму столбцу равно 6. (3) так что ~ 6 это означает, что мне нужно 6, чтобы быть в 3-й строке
Третий столбецсреднее значение - 5. (6), поэтому ~ 6, это означает, что мне нужно, чтобы 7 было в 3-й строке, потому что это самое близкое число к ~ 6.

Ожидаемый результат

  1 5 8 
  8 8 2 
  4 6 7 

И я некоторое время думал, как это сделать, но безуспешно.Мне удается вычислить среднее значение для каждого столбца, и это все.

Так что мне нужна помощь по замене элементов в столбцах

Заранее спасибо (если вам нужна дополнительная информация, просто спросите)

Дополнительные примеры

Input              Input
1 2 3              4 8 9
4 5 6              3 1 7               
7 8 9              7 3 2

Output             Output
1 2 3              7 8 9
7 8 9              3 1 2
4 5 6              4 3 7

1-й цвет = 4 1-й ср = ~ 4

2-й цвет = 5 2-й ср = 4

3-й цвет= 6 3rd col avg = ~ 7

(Поменять число таким образом, чтобы число, близкое к среднему по столбцу, вернулось назад, сортировка также может сделать работу, потому что мне не важна позиция до тех пор, пока это число является ближайшимк среднему столбцу возвращается)

1 Ответ

0 голосов
/ 07 декабря 2018

Поскольку вы уже знаете средние значения (то есть позиции) и используете C ++, вы можете использовать std :: swap для замены любых двух элементов в массиве:

std::swap(array[e1], array[e2]);

Внутренний стандартРеализация подкачки выглядит примерно так:

template <class T> void swap ( T& a, T& b )
{
  T c(a); a=b; b=c;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...