Поменять местами соответствующие элементы, расположенные левее главной и побочной диагоналей и правее них - C (СИ)
Формулировка задачи:
Есть написанная программа, которая меняет местами соответствующие элементы, расположенные левее главной и побочной диагоналей и правее них.
Вопрос: Почему выводится не матрицей?
Скриншот приложен.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <math.h>
int main()
{
int i, j, n, m, massiv_min, massiv_max, temp;
time_t t; // Текущее время для инициализации рандомайзера
srand((unsigned) time (&t)); // Инициализация рандомазера
printf("\nVvedite niz. granitsu diapazona:"); // Ввод данных
scanf("%d", &massiv_min);
printf("\nVvedite verh granitsu diapazona:");
scanf("%d", &massiv_max);
printf("\nVvedite razmer massiva:");
scanf("%d", &n);
int massiv[n][n]; //Вывод исходного массива
printf("\nIshodniy massiv:\n");
m=massiv_max-massiv_min+1;
for(i=0; i<n; i++) // Получение случайного числа в диапазоне от vector_min до vector_max
{
for(j=0; j<n; j++)
{
massiv[i][j]=rand()%m+massiv_min; // %m - верхний предел для генерации последовательности - переменная "m".
printf("%5d", massiv[i][j]);
}
printf("\n");
}
for(i=0; i<(n/2); i++)
{
for(j=0; j<i; j++)
{
temp=massiv[i][j]; // Отразить верхние элементы (выше средней строки)
massiv[i][j]=massiv[i][n-1-j];
massiv[i][n-1-j]=temp;
temp=massiv[n-1-i][j]; // Отразить нижние элементы (ниже средней строки)
massiv[n-1-i][j]=massiv[n-1-i][n-1-j];
massiv[n-1-i][n-1-j]=temp;
}
}
printf("\nVihodnoi massiv\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%5d", massiv[i][j]);
}
}
printf("\n");
return 0;
}Решение задачи: «Поменять местами соответствующие элементы, расположенные левее главной и побочной диагоналей и правее них»
textual
Листинг программы
i<ceil(n / 2.0)
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Переменная
nинициализируется значением, равным количеству элементов в массиве. - Переменная
iинициализируется значением, равным количеству элементов в первой половине массива (округленному в большую сторону до ближайшего целого числа). - Запускается цикл
for, который выполняетсяiраз. - Внутри цикла меняются местами элементы, расположенные левее главной и побочной диагоналей и правее них.
- После выполнения цикла выводится результат.