Переставить местами элементы между верхним и нижним сектором матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана квадратная матрица. Пусть главная и побочная диагональ делит матрицу на четыре сектора. Переставить метами элементы между верхним и нижним сектором, а также между правым и левым. Обе диагонали обнулить. Где ошибка?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N;
puts("Vvedite razmernost kvadratnoi matrici:");
scanf("%d",&N);
int a[N][N];
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("Vvedite element matrici a[%d][%d]:\n",i,j);
scanf("%d",&a[i][j]);
}
}
puts("Vasha matrica:");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
printf("%d %d znachenie: %d\n",i,j,a[i][j]);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i==j)
{
a[i][j]=0;
}
if(i+j==N-1)
{
a[i][j]=0;
}
}
}
int b=0,n=N,c=1;
for(j=N-2;;j--)
{
for(i=N-1&&c=a[i][j];;i--)
{
if(a[i][j]!=0&&i+j!=N)
{
b=a[i][j];
a[i][j]=c;
}
}
}
puts("Novaya matrica:");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
printf("%d %d znachenie: %d\n",i,j,a[i][j]);
}
return 0;
}

Решение задачи: «Переставить местами элементы между верхним и нижним сектором матрицы»

textual
Листинг программы
void swap(int*a, int*b) {
    int t = *a;
    *a = *b;
    *b = t;
}
...
Цикл, который делает нужные перестановки
for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            // diagonal
            if ((i == j) || (i + j == N - 1))
                a[i][j] = 0;
            // ver[-niz
            if ((i < j) && (j < N - 1 - i))
                swap(&a[i][j], &a[N - 1 - i][j]);
            // levo-pravo
            if ((i > j) && (i < N - 1 - j))
                swap(&a[i][j], &a[i][N - 1 - j]);
 
        }
    }

Объяснение кода листинга программы

Код представляет собой функцию, которая меняет местами элементы в матрице. Функция swap меняет местами два указателя на элементы матрицы. Цикл выполняет несколько проверок и вызывает функцию swap для соответствующих элементов.

  1. Переменная N - размер матрицы
  2. Переменная i - текущий индекс по горизонтали
  3. Переменная j - текущий индекс по вертикали
  4. a[i][j] - элемент матрицы, который может быть изменен Внутри циклов выполняются следующие действия:
  5. Проверка на главной диагонали: если i == j или i + j == N - 1, то элемент матрицы устанавливается равным нулю.
  6. Проверка для верхнего сектора: если i < j и j < N - 1 - i, то элементы a[i][j] и a[N - 1 - i][j] меняются местами с помощью функции swap.
  7. Проверка для левого верхнего сектора: если i > j и i < N - 1 - j, то элементы a[i][j] и a[i][N - 1 - j] меняются местами с помощью функции swap. Поскольку код не выводит результат на экран, предполагается, что он используется в другом контексте и матрица передается в функцию для дальнейшей обработки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы