Поменять местами строки матрицы с наибольшим и с наименьшим значением - C (СИ)

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

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

Есть задание: Задан двухмерный массив вещественных чисел размерности 3х3. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу. Вот код:
Листинг программы
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "locale.h"
  4. #define SIZE 3
  5. int main()
  6. {
  7. setlocale(LC_ALL, "RUS");
  8. const int array [SIZE][SIZE] = {
  9. {1, 5, 7},
  10. {6, 9, 0},
  11. {4, 3, -2}
  12. };
  13. int i,j, min = array [0][0];
  14. for (i=0; i<SIZE; i++) {
  15. for (j=0; j<SIZE; j++) {
  16. if (min>array[i][j]) {
  17. min = array[i][j];
  18. }
  19. }
  20. }
  21. printf("Минимальное значение матрицы = %d \n", min);
  22. return 0;
  23. }
Нужно написать такое, чтоб менялась строка с наибольшим значением с строкой с наименьшим значением. Помогите пожалуйста)

Решение задачи: «Поменять местами строки матрицы с наибольшим и с наименьшим значением»

textual
Листинг программы
  1. #include "stdio.h"
  2. #include "locale.h"
  3. #define SIZE 3
  4.  
  5. int main()
  6. {
  7.     setlocale(LC_ALL, "RUS");
  8.     int array [][SIZE] = {
  9.         {1, 5, 7},
  10.         {6, 9, 0},
  11.         {4, 3, -2}
  12.     };
  13.  
  14.     int i,j;
  15.     int imin = 0;
  16.     int imax = 0;
  17.     int jmin = 0;
  18.     int jmax = 0;
  19.     int buf  = 0;
  20.  
  21.     for (i=0; i<SIZE; i++)
  22.     for (j=0; j<SIZE; j++)
  23.     {
  24.  
  25.         if( array[imin][jmin]> array[i][j])
  26.         {
  27.             imin = i;
  28.             jmin = j;
  29.         }
  30.         else
  31.         if( array[imax][jmax]< array[i][j])
  32.         {
  33.             imax = i;
  34.             jmax = j;
  35.         }
  36.  
  37.     }
  38.     printf("Минимальное  значение матрицы = %d \n", array[imin][jmin]);
  39.     printf("Максимальное значение матрицы = %d \n", array[imax][jmax]);
  40.     for (j=0; j<SIZE; j++)
  41.     {
  42.         buf = array[imin][j];
  43.         array[imin][j] = array[imax][j];
  44.         array[imax][j] = buf;
  45.     }
  46.  
  47.     for (i=0; i<SIZE; i++) {
  48.     for (j=0; j<SIZE; j++)
  49.         printf("%d\t", array[i][j]);
  50.         printf("\r\n");
  51.     }
  52.     return 0;
  53. }

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

  1. Включаются необходимые заголовочные файлы stdio.h и locale.h.
  2. Определяется размер матрицы SIZE, равный 3.
  3. Объявляется и инициализируется матрица array[3][3] с примером значений.
  4. Объявляются необходимые переменные для поиска минимального и максимального значения в матрице: а) i, j — циклы для перебора всех элементов матрицы; б) imin, jmin — индексы минимального значения; в) imax, jmax — индексы максимального значения; г) buf — временная буферная переменная для обмена значениями.
  5. В цикле перебираются все элементы матрицы.
  6. Если текущий элемент больше значения в позиции imin[jmin], то обновляются значения индексов минимального значения.
  7. Если текущий элемент меньше значения в позиции imax[jmax], то обновляются значения индексов максимального значения.
  8. Выводятся на экран минимальное и максимальное значения матрицы.
  9. В цикле меняются местами значения в позициях imin[j] и imax[j].
  10. В цикле выводятся все значения матрицы на экран.
  11. Программа возвращает 0, заканчивая свою работу.

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


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

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

10   голосов , оценка 4.3 из 5

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

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

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