Отразить элементы NxN массива относительно центрального элемента - C (СИ)

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

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

Добрый день. Задача заключается в том, что бы отразить элементы квадратной матрицы относительно центрального элемента. Ввод и вывод данных в порядке. Я использовал константу равную пяти и заполнение массива случайными элементами. Проблема в теле программы. (Так же ниже будет приведён код рабочей программы, но написанной на Паскале, надеюсь это поможет). Заранее благодарю людей готовых помочь.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
const int n=5;
void main(void)
 
    {
        int i,j,mas[n][n], temp, m_min, m_max, x;
        
        printf("\nEnter input data:");
        printf("\n Minimal element is ");
        scanf("%d", &m_min);
        printf("\n Maximal element is ");
        scanf("%d", &m_max);
        srand(time(NULL));
        printf("Initial massive:\n");
        for (i=0; i<n; i++)                                    
            {
                for (j=0; j<n; j++)
                    {
                        mas[i][j]=m_min-1 + rand() % m_max+1 ;
                        printf("%5d",mas[i][j]);
                    }
                printf("\n");
            }
            
        for (i=0; i<n/2; i++)
        for (j=0; j<n; j++)
            {
                x=mas[i][j];
                mas[i][j]=mas[n-i+1][n-j+1];
                mas[n-i+1][n-j+1]=x;
            }
        for (i=0; i<n/2; i++)
            {
                x=mas[n/2+1][i];
                mas[n/2+1][i]=mas[n/2+1][n-i+1];
                mas[n/2+1][n-i+1]=x;
            }

        printf("Resulting massive:\n");
        for (i=0; i<n; i++)
            {
                for (j=0; j<n; j++)
                printf("%5d",mas[i][j]);
                printf("\n");
            }
        return;
    }
Рабочая программа на паскале:
var a:array[1..20,1..20] of integer;
    n,i,j,x:integer;
begin
repeat
write('3<=n<=15 n=');
readln(n);
until n in [3..15];
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=(i-1)*n+j;
    write(a[i,j]:4);
   end;
  writeln;
 end;
for i:=1 to n div 2 do
for j:=1 to n do
 begin
  x:=a[i,j];
  a[i,j]:=a[n-i+1,n-j+1];
  a[n-i+1,n-j+1]:=x;
 end;
//переставим элементы  средней строки
for i:=1 to n div 2 do
 begin
  x:=a[n div 2+1,i];
  a[n div 2+1,i]:=a[n div 2+1,n-i+1];
  a[n div 2+1,n-i+1]:=x;
 end;
writeln('Зеркальное отражение относительно центра:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end.

Решение задачи: «Отразить элементы NxN массива относительно центрального элемента»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
const int n=5;
void main(void)
 
{
    int i,j,mas[n][n], temp, m_min, m_max, x;
    
    printf("\nEnter input data:");
    printf("\n Minimal element is ");
    scanf("%d", &m_min);
    printf("\n Maximal element is ");
    scanf("%d", &m_max);
    srand(time(NULL));
    printf("Initial massive:\n");
    
    for (i=0; i<n; i++)                                    
        {
            for (j=0; j<n; j++)
                {
                    mas[i][j]=m_min-1 + rand() % m_max+1 ;
                    printf("%5d",mas[i][j]);
                }
            printf("\n");
        }
 
            
    for (i=0; i<n/2; i++)
    for (j=0; j<n; j++)
        {
            x=mas[i][j];
            mas[i][j]=mas[n-i-1][n-j-1];
            mas[n-i-1][n-j-1]=x;
        }
 
    for (i=0; i<n/2; i++)
        {
    x=mas[n/2][i];
    mas[n/2][i]=mas[n/2][n-i-1];
    mas[n/2][n-i-1]=x;
        }
            
    printf("Resulting massive:\n");
    for (i=0; i<n; i++)
        {
            for (j=0; j<n; j++)
            printf("%5d",mas[i][j]);
            printf("\n");
        }
    return;
}

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

Код выполняет следующие действия:

  1. Задаёт размерность массива NxN и выводит приглашение для ввода данных.
  2. Запрашивает у пользователя минимальный и максимальный элементы массива.
  3. Инициализирует массив случайными числами, удовлетворяющими условиям.
  4. Выводит начальный массив.
  5. Делит массив пополам на две равные части относительно центрального элемента.
  6. Меняет местами элементы правой и левой половин массива.
  7. Выводит полученный массив.

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


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

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

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