Здравствуйте, появилась проблема, при которой код работает как надо, но выдает после выполнения ошибку о том, что компилятор пытается обратиться к -1 элементу массива. При изменении -1 на 0 в цикле, или >= 0, программа выполняется не так, как надо.
Коротко говоря, суть задачи в том, чтобы передвинуть двумерный массив на N позиций вправо.
Можно ли как-то исправить код без переписывания и использования других решений? Оставив цикл и swap. Заранее благодарю за решение
srand(time(NULL));
int arr[3][6], num{0};
for (int i{ 0 }; i < 3; i++) {
for (int j{ 0 }; j < 6; j++) {
arr[i][j] = rand() % 20 + 1;
cout << arr[i][j] << "\t";
}
cout << endl;
}
cout << "Введите на сколько позиций сдвинуть: ";
cin >> num;
for (int i{0}; i < num; i++) {
int temp = arr[2][5];
for (int i{ 2 }; i > -1; i--) {
for (int j{ 5 }; j > -1; j--) {
swap(arr[i][j], arr[i][j - 1]);
}
if (i == 0) {
arr[0][0] = temp;
break;
}
}
}
for (int i{ 0 }; i < 3; i++) {
for (int j{ 0 }; j < 6; j++) {
cout << arr[i][j] << "\t";
}
cout << endl;
}