Поменять местами строки матрицы с наибольшим и с наименьшим значением - 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
stdio.hиlocale.h. - Определяется размер матрицы SIZE, равный 3.
- Объявляется и инициализируется матрица array[3][3] с примером значений.
- Объявляются необходимые переменные для поиска минимального и максимального значения в матрице: а) i, j — циклы для перебора всех элементов матрицы; б) imin, jmin — индексы минимального значения; в) imax, jmax — индексы максимального значения; г) buf — временная буферная переменная для обмена значениями.
- В цикле перебираются все элементы матрицы.
- Если текущий элемент больше значения в позиции imin[jmin], то обновляются значения индексов минимального значения.
- Если текущий элемент меньше значения в позиции imax[jmax], то обновляются значения индексов максимального значения.
- Выводятся на экран минимальное и максимальное значения матрицы.
- В цикле меняются местами значения в позициях imin[j] и imax[j].
- В цикле выводятся все значения матрицы на экран.
- Программа возвращает 0, заканчивая свою работу.