Как сдвинуть весь 2D массив - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь управлять светодиодной матрицей и у меня проблема со смещением всего дисплея вниз. Моя конечная цель состоит в том, чтобы переместить все ряды и, надеюсь, в конечном итоге осуществить обтекание. Проблема в том, что первая строка копируется каждый раз, когда каждая строка сдвигается.

Код, который я использовал, выглядит следующим образом:

for (int i = (LAYERS - 1); i >= 0; i-- ) {
            for(int z = 0; z < BYTES; z++) {
                LED_Buffer[i+1][z] = LED_Buffer[i][z];
            }
        }

1 Ответ

1 голос
/ 18 апреля 2019

Вам понадобится какая-то временная переменная для обтекания.

Общий алгоритм для перемещения элементов на одну позицию вниз по массиву, учитывая некоторый массив foobar[size], таков:

tmp = foobar[size-1];
for(int i=size-1; i>0; i--) // note i>0, don't include first item
{
  foobar[i] = foobar[i-1];
}
foobar[0] = tmp;

, где size-1 происходит из 0-индексированных массивов.Теперь просто примените то же самое к вашему конкретному случаю.

...