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

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

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

Всем доброго времени суток! Смотрите, у меня получился код, который меняет местами (отражает зеркально) элементы, расположенные выше главной и побочной диагоналей и ниже их. Элементы диагоналей не затронуты. А мне нужно чтобы был найден максимальный элемент выше главной диагонали и минимальный – ниже ее, и нужно их поменять местами. У кого какие соображения? Я так понимаю нужно поменять условия, начиная с 3 цикла for. Должно быть как на картинке. Код:
Листинг программы
  1. #include <stdio.h> //inclusion of libraries
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <time.h>
  5. int main()
  6. {
  7. int i, j, n, massiv_min, massiv_max,swap;
  8. time_t t; // actual time for initialization
  9. // of random number generator
  10. srand((unsigned) time(&t)); // generator initialization
  11. printf("\nInput the lower border of range:");
  12. scanf("%d", &massiv_min);
  13. printf("\nInput the upper border of range:");
  14. scanf("%d", &massiv_max);
  15. printf("\nInput number of rows and columns:");
  16. scanf("%d", &n);
  17.  
  18. int massiv[n][n];
  19. printf("\nSource massive:\n");
  20. for (i=0; i<n; i++)
  21. {
  22. // getting of random number in range
  23. // for massiv_min to massuv_max
  24. for (j=0; j<n; j++)
  25. {
  26. massiv[i][j]=rand()%(massiv_max-massiv_min + 1) + massiv_min;
  27. printf("%7d", massiv[i][j]);
  28. }
  29. printf("\n");
  30. }
  31. printf("\n");
  32. for (i=0;i<=n/2;i++)
  33. {
  34. for (j=i+1;j<n-(i+1);j++)
  35. {
  36. swap=massiv[i][j];
  37. massiv[i][j]=massiv[n-(i+1)][j];
  38. massiv[n-(i+1)][j]=swap;
  39. }
  40. }
  41. printf("\n");
  42. printf("\nNew massive:\n");
  43. for (i=0;i<n;i++)
  44. {
  45. for(j=0;j<n;j++)
  46. printf("%7d", massiv[i][j]);
  47. printf("\n");
  48. }
  49. return 0;
  50. }
  51. //function description

Решение задачи: «Поменять местами максимальный элемент выше главной диагонали и минимальный ниже ее»

textual
Листинг программы
  1. int iMax=0, jMax=1; // индексы максимального элемента
  2. int iMin=1, jMin=0; // индексы минимального элемента
  3.  
  4. for (i=0; i<n; i++)
  5.     for (j=0; j<n; j++)
  6.     {
  7.         if (i < j) // выше главной диагонали
  8.         {
  9.             if (massiv[i][j] > massiv[iMax][jMax])
  10.             {
  11.                 iMax = i;
  12.                 jMax = j;
  13.             }
  14.         }
  15.         else if (i > j) // ниже главной диагонали
  16.         {
  17.             if (massiv[i][j] < massiv[iMin][jMin])
  18.             {
  19.                 iMin = i;
  20.                 jMin = j;
  21.             }
  22.         }
  23.     }
  24.  
  25. swap = massiv[iMax][jMax];
  26. massiv[iMax][jMax] = massiv[iMin][jMin];
  27. massiv[iMin][jMin] = swap;

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

  1. Вначале объявляются четыре переменные: iMax, jMax, iMin и jMin. Они используются для хранения индексов максимального и минимального элементов.
  2. Начальные значения iMax и jMax устанавливаются равными 0 и 1 соответственно, что означает, что начальный максимальный элемент находится в позиции (0,0). Начальные значения iMin и jMin устанавливаются равными 1 и 0 соответственно, что означает, что начальный минимальный элемент находится в позиции (1,0).
  3. Затем следует вложенный двойной цикл for, который проходит по всем элементам массива.
  4. Если текущий элемент находится выше главной диагонали (то есть i < j), то проверяется, является ли он максимальным среди уже найденных максимальных элементов. Если это так, то обновляются значения iMax и jMax.
  5. Если текущий элемент находится ниже главной диагонали (то есть i > j), то проверяется, является ли он минимальным среди уже найденных минимальных элементов. Если это так, то обновляются значения iMin и jMin.
  6. После завершения циклов, в переменной swap хранится значение элемента, находящегося в позиции (iMax, jMax).
  7. Затем происходит обмен значениями между элементами в позициях (iMax, jMax) и (iMin, jMin), используя переменную swap.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы