Отразить элементы 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; }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Задаёт размерность массива NxN и выводит приглашение для ввода данных.
- Запрашивает у пользователя минимальный и максимальный элементы массива.
- Инициализирует массив случайными числами, удовлетворяющими условиям.
- Выводит начальный массив.
- Делит массив пополам на две равные части относительно центрального элемента.
- Меняет местами элементы правой и левой половин массива.
- Выводит полученный массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д