Переставить в матрице друг с другом квадраты по кругу - 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, завершая программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д