2015-10-21 3 views
2

Как сделать массив тороидальным (оберните снизу вверх и слева направо), т.е. самая левая ячейка считается самой правой ячейкой, например [0] [0] и [5] [5 ] являются одними и теми же ячейками в int array[5][5]Создание тороидального массива 2D

ответ

2

«Торидиальность» (если это фактически слово) может быть реализована с помощью функции доступа, которая выполняет сопоставление (с использованием оператора останова деления) вместо операторов скобок на массивы напрямую. Функция может быть реализована следующим образом, где m и n - это количество строк и столбцов board, соответственно.

int GetElement(int i, int j) 
{ 
    return board[i % m][j % n]; 
} 
+0

Так что это должно быть сделано прежде всего перед всеми другими функциями? Создайте тороидальный 2D-массив, а затем мой код, указанный в моем вопросе, будет работать над этим новым тороидальным массивом? –

+0

Это всего лишь эскиз; прямой доступ через '[i] [j]' будет заменен на 'GetElement (i, j)'. Обратите внимание, что может потребоваться дополнительная тонкая настройка, если «i» и «j» разрешены как отрицательные. – Codor

+1

А так, например, 'if (GetElement (i + 1, j + 1) == 1' и т. Д. –

Смежные вопросы