Переставить в матрице друг с другом квадраты по кругу - 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, завершая программу