Задача:
Поворот матрицы. Сдвинуть элементы заданной матрицы в пределах периметра каждых вложенных подматриц на одну позицию по часовой стрелке. Матрица N*M
Разъяснение условия
Пример (N=3; M=4):
0| 1 | 2 | 3 | 4
=|================
1| 1 2 3 4
2| 5 6* 7* 8
3| 9 10 11 12
Результат (Как видите 6 и 7 не поменяли свое местоположение так как матрица 3х4):
0| 1 | 2 | 3 | 4
=|================
1| 5 1 2 3
2| 9 6* 7* 4
3| 10 11 12 8
Пример №2 (N=4; M=4):
0| 1 | 2 | 3 | 4
=|================
1| 1 2 3 4
2| 5 6 7 8
3| 9 10 11 12
4| 13 14 15 16
Результат №2 (Как видите 6, 7, 10, 11 тоже повернулись на один элемент вправо):
0| 1 | 2 | 3 | 4
=|================
1| 5 1 2 3
2| 9 10* 6* 4
3| 13 11* 7* 8
4| 14 15 16 12
"Цифра"* для пояснения
Вот мой код(я пытался делать через одномерный массив):
#include <iostream>
using namespace std;
int main() {
int i, j;
int N;
cout << "Введите размеры матрицы:" << endl;
cout << "N = ";
cin >> N;
cout << "Матрица размером: " << N << "x" << N << endl;
int o = N * N;
int k = 0, mas[o];
int **A = new int *[N];
for (i = 0; i < N; i++) {
A[i] = new int[N];
}
int **B = new int *[N];
for (i = 0; i < N; i++) {
B[i] = new int[N];
}
cout << "Введите матрицу:" << endl;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
cin >> A[i][j];
}
}
cout << "Матрица до поворота:" << endl;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
B[i][j] = A[i][j];
cout << B[i][j] << " ";
}
cout << endl;
}
/*Test*/
cout << "Одномерная матрица:" << endl;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
mas[k++] = B[i][j];
}
}
for (k = 0; k < o; k++) {
cout << mas[k] << " ";
}
cout << endl;
cout << "Сортировка:" << endl;
for (k = 0; k < o - 1; k++) {
int temp = mas[k];
mas[k] = mas[k + 1];
mas[k + 1] = temp;
}
for (k = 0; k < o; k++) {
cout << mas[k] << " ";
}
cout << endl;
k = 0;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
B[i][j] = mas[k++];
}
}
/*Test*/
cout << "Матрица после поворота:" << endl;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
cout << B[i][j] << " ";
}
cout << endl;
}
for (i = 0; i < N; i++) {
delete[] A[i];
delete[] B[i];
}
system("pause");
return 0;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
где найти mstest и testcomplite? можно может у кого есть ссылка на офсайт?
В Windows 10 что-то не так, ucrtbaseddll плюется исключениями:
Зачем нужен спецификатор private в C++, если по умолчанию итак все функции и переменные являются закрытыми?