Как создать цикл который заменит местами четные строки с четными столбцами в матрице?

Для начала, рассмотрим, как создать и заполнить матрицу в C++. Матрицу можно представить как двухмерный массив. Для создания такого массива нужно указать тип его элементов и его размеры. Например, создадим матрицу размером 3x3 и заполним ее случайными числами:

#include <iostream>
#include <cstdlib> // для генерации случайных чисел
#include <ctime> // для инициализации генератора случайных чисел

int main() {
    // инициализируем генератор случайных чисел
    std::srand(std::time(0));

    // размеры матрицы
    const int rows = 3;
    const int cols = 3;

    // создаем и заполняем матрицу случайными числами
    int matrix[rows][cols];
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            matrix[i][j] = std::rand() % 100; // случайное число от 0 до 99
        }
    }

    // выводим исходную матрицу на экран
    std::cout << "Исходная матрица:" << std::endl;
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            std::cout << matrix[i][j] << ' ';
        }
        std::cout << std::endl;
    }

    // TODO: здесь будет код для замены строк с столбцами

    return 0;
}

Теперь, чтобы заменить четные строки с четными столбцами в матрице, можно использовать циклы с условием, проверяющим четность строк и столбцов. Если строка и столбец четные, то меняем их значения местами.

// замена строк с четными столбцами
for (int i = 0; i < rows; i += 2) {
    if (i % 2 == 0) {
        for (int j = 0; j < cols; j += 2) {
            if (j % 2 == 0) {
                std::swap(matrix[i][j], matrix[j][i]);
            }
        }
    }
}

// выводим измененную матрицу на экран
std::cout << "Матрица после замены:" << std::endl;
for (int i = 0; i < rows; ++i) {
    for (int j = 0; j < cols; ++j) {
        std::cout << matrix[i][j] << ' ';
    }
    std::cout << std::endl;
}

Здесь используется функция std::swap, которая меняет местами значения двух переменных. В данном случае мы меняем значения элементов matrix[i][j] и matrix[j][i]. После завершения циклов матрица будет иметь поменяные четные строки и столбцы.

Таким образом, чтобы создать цикл, который заменит местами четные строки с четными столбцами в матрице, нужно использовать два вложенных цикла: один для обхода строк, а другой для обхода столбцов. В циклах проверяется четность индексов строк и столбцов, и если они четные, то значения этих элементов меняются местами с помощью функции std::swap.