Как написать на языке C++?
Матрица поделена на 4 треугольных секций (крестовина + диагонали квадрата). Поменять местами пару секций (расположенные над/под горизонтальной крестовиной, посередине от вертикальной)
Ответы
Ответ:
#include <iostream>
const int N = 4; // размер матрицы
void swap(int matrix[N][N], int row1, int row2) {
for (int col = 0; col < N; col++) {
int temp = matrix[row1][col];
matrix[row1][col] = matrix[row2][col];
matrix[row2][col] = temp;
}
}
void swapSections(int matrix[N][N]) {
// Номера строк секций, которые нужно поменять местами
int row1 = N / 2 - 1;
int row2 = N / 2;
// Меняем местами строки, соответствующие секциям
swap(matrix, row1, row2);
// Меняем местами диагонали квадрата
for (int i = 0; i < N; i++) {
int temp = matrix[i][i];
matrix[i][i] = matrix[N - i - 1][N - i - 1];
matrix[N - i - 1][N - i - 1] = temp;
}
}
int main() {
int matrix[N][N] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
// Выводим исходную матрицу
std::cout << "Исходная матрица:\n";
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n";
}
// Меняем местами пару секций
swapSections(matrix);
// Выводим полученную матрицу
std::cout << "Матрица после перестановки:\n";
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n";
}
return 0;
}
Объяснение:
В моем примере для решения задачи мы определили функцию 'swap', которая меняет местами две строки матрицы, и функцию 'swapSections', которая вызывает 'swap' для нужных строк и меняет местами диагонали квадрата. Затем на примере я использую эти функции в функции 'main' для смены места пары секций в матрице.