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

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

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

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

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

textual
Листинг программы
#include "stdio.h"
#include "locale.h"
#define SIZE 3
 
int main()
{ 
    setlocale(LC_ALL, "RUS");
    int array [][SIZE] = {
        {1, 5, 7},
        {6, 9, 0},
        {4, 3, -2}
    };
 
    int i,j; 
    int imin = 0;
    int imax = 0;
    int jmin = 0;
    int jmax = 0;
    int buf  = 0;
 
    for (i=0; i<SIZE; i++) 
    for (j=0; j<SIZE; j++) 
    {
 
        if( array[imin][jmin]> array[i][j]) 
        {
            imin = i;
            jmin = j;
        }
        else
        if( array[imax][jmax]< array[i][j]) 
        {
            imax = i;
            jmax = j;
        }
 
    }
    printf("Минимальное  значение матрицы = %d \n", array[imin][jmin]);
    printf("Максимальное значение матрицы = %d \n", array[imax][jmax]);
    for (j=0; j<SIZE; j++) 
    {
        buf = array[imin][j];
        array[imin][j] = array[imax][j];
        array[imax][j] = buf;
    }
 
    for (i=0; i<SIZE; i++) {
    for (j=0; j<SIZE; j++) 
        printf("%d\t", array[i][j]);
        printf("\r\n");
    }
    return 0;
}

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

  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
Похожие ответы