Двумерные массивы в С++ - где ошибка?
Мне нужно сделать сдвиг вправо в двумерном массиве и я придумал только такой метод (через переприсвоение значений), но программа не хочет етого делать и просто выводит один и тот же масив.
const int SIZE_X = 3, SIZE_Y = 3;
int arr[SIZE_Y][SIZE_X];
for (int i = 0; i < SIZE_Y; i++)
{
for (int j = 0; j < SIZE_X; j++)
{
arr[i][j] = rand() % 10;
}
}
for (int i = 0; i < SIZE_Y; i++)
{
for (int j = 0; j < SIZE_X; j++)
{
int num = 0;
num = arr[i][1];
arr[i][1] = arr[i][0];
arr[i][0] = arr[i][2];
arr[i][2] = num;
}
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Этот код
for (int j = 0; j < SIZE_X; j++)
{
int num = 0;
num = arr[i][1];
arr[i][1] = arr[i][0];
arr[i][0] = arr[i][2];
arr[i][2] = num;
}
SIZE_X раз выполняет смещение на один элемент. Так как всего элементов SIZE_X - массив переходит в исходное состояние, сделав круг.