Переставить в матрице друг с другом квадраты по кругу - C (СИ)
Формулировка задачи:
Рассматривая матрицу A(n × n) как составленную из четырех квадратов, переставить в ней друг с другом квадраты по кругу. Помогите пожалуйста. Спасибо.
Решение задачи: «Переставить в матрице друг с другом квадраты по кругу»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 6 int main() { int A[N][N] = {{ 1, 2, 3, 4, 5, 6}, { 7, 8, 9,10,11,12}, {13,14,15,16,17,18}, {19,20,21,22,23,24}, {25,26,27,28,29,30}, {31,32,33,34,35,36}}; int i, j, buff; for(i = 0; i < N / 2; ++i){ for(j = 0; j < N / 2; ++j){ buff = A[N / 2 + i][j]; A[N / 2 + i][j] = A[i][j]; A[i][j] = buff; } } for(i = 0; i < N / 2; ++i){ for(j = N / 2; j < N; ++j){ buff = A[N / 2 + i][j]; A[N / 2 + i][j] = A[i][j]; A[i][j] = buff; } } for(i = N / 2; i < N; ++i) for(j = 0; j < N / 2; ++j){ buff = A[i - N / 2][j + N / 2]; A[i - N / 2][j + N / 2] = A[i][j]; A[i][j] = buff; } for(i = 0; i < N; ++i){ for(j = 0; j < N; ++j) printf("%3d", A[i][j]); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Определяется размерность матрицы N = 6
- Создается матрица A типа int размером N x N и инициализируется значениями от 1 до 36
- Создаются переменные i, j, buff типа int для выполнения операций перестановки
- В первой половине матрицы (i < N / 2) выполняется перестановка элементов по диагонали, начиная с элемента A[N / 2 + i][j]
- Во второй половине матрицы (i < N / 2) выполняется перестановка элементов по диагонали, начиная с элемента A[N / 2 + i][j]
- В третьей половине матрицы (i < N / 2) выполняется перестановка элементов по диагонали, начиная с элемента A[i - N / 2][j + N / 2]
- Выводится на экран содержимое матрицы A
- Функция main() возвращает 0, завершая программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д