Поменять местами максимальный элемент выше главной диагонали и минимальный ниже ее - C (СИ)

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

Всем доброго времени суток! Смотрите, у меня получился код, который меняет местами (отражает зеркально) элементы, расположенные выше главной и побочной диагоналей и ниже их. Элементы диагоналей не затронуты. А мне нужно чтобы был найден максимальный элемент выше главной диагонали и минимальный – ниже ее, и нужно их поменять местами. У кого какие соображения? Я так понимаю нужно поменять условия, начиная с 3 цикла for. Должно быть как на картинке. Код:
#include <stdio.h> //inclusion of libraries
#include <conio.h>
#include <math.h>
#include <time.h>
 
int main()
{
int i, j, n, massiv_min, massiv_max,swap;
 
time_t t;   // actual time for initialization
// of random number generator
 
srand((unsigned) time(&t)); // generator initialization
 
printf("\nInput the lower border of range:");
scanf("%d", &massiv_min);
printf("\nInput the upper border of range:");
scanf("%d", &massiv_max);
printf("\nInput number of rows and columns:");
scanf("%d", &n);
 
 
int massiv[n][n];
 
printf("\nSource massive:\n");
 
for (i=0; i<n; i++)
{
// getting of random number in range
// for massiv_min to massuv_max
 
for (j=0; j<n; j++)
{
massiv[i][j]=rand()%(massiv_max-massiv_min + 1) + massiv_min;
printf("%7d", massiv[i][j]);
 
}
printf("\n");
}
printf("\n");
 
for (i=0;i<=n/2;i++)
{
for (j=i+1;j<n-(i+1);j++)
{
swap=massiv[i][j];
massiv[i][j]=massiv[n-(i+1)][j];
massiv[n-(i+1)][j]=swap;
}
 
}
printf("\n");
printf("\nNew massive:\n");
 
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%7d", massiv[i][j]);
 
printf("\n");
}
 
return 0;
}
//function description

Код к задаче: «Поменять местами максимальный элемент выше главной диагонали и минимальный ниже ее - C (СИ)»

textual
int iMax=0, jMax=1; // индексы максимального элемента
int iMin=1, jMin=0; // индексы минимального элемента
 
for (i=0; i<n; i++)
    for (j=0; j<n; j++)
    {
        if (i < j) // выше главной диагонали
        {
            if (massiv[i][j] > massiv[iMax][jMax])
            {
                iMax = i;
                jMax = j;
            }
        }
        else if (i > j) // ниже главной диагонали
        {
            if (massiv[i][j] < massiv[iMin][jMin])
            {
                iMin = i;
                jMin = j;
            }
        }
    }
 
swap = massiv[iMax][jMax];
massiv[iMax][jMax] = massiv[iMin][jMin];
massiv[iMin][jMin] = swap;

6   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы