Разбить на подпрограммы программу, которая выводит на экран седловые точки матрицы - C (СИ)
Формулировка задачи:
Приветствую.
Вот код, программа выводит на экран седловые точки матрицы MxN (минимальные в столбце и максимальные в строке).
Помогите, пожалуйста, выделить из main() отдельно функцию вычисления максимальных в строках элементов и функцию вычисления минимальных в столбцах элементов. Сравнивание минимумов и максимумов а также вывод на экран должны остаться в main()
#include <stdio.h> #include <stdlib.h> #define MAX_WIDTH 5 #define MAX_HEIGHT 8 int m[MAX_WIDTH][MAX_HEIGHT]= { { 1, 2, 1, 3, 2, 2, 7, 2 }, { 1, 3, 2, 1, 1, 2, 7, 2 }, { 1, 4, 2, 2, 2, 3, 7, 3 }, { 7, 7, 5, 7, 7, 7, 9, 7 }, { 6, 2, 3, 3, 5, 1, 4, 3 }, }; int i, j, val,found=0; int max_h[MAX_WIDTH], min_w[MAX_HEIGHT]; int main() { //***поиск максимумов в строках for ( i= 0; i<MAX_WIDTH; i++ ) { val= m[i][0]; for ( j= 1; j<MAX_HEIGHT; j++ ) { if ( m[i][j]>val ) { val= m[i][j]; } } max_h[i]= val; } //***поиск минимумов в столбцах for ( j= 0; j<MAX_HEIGHT; j++ ) { val= m[0][j]; for ( i= 1; i<MAX_WIDTH; i++ ) { if ( m[i][j]<val ) { val= m[i][j]; } } min_w[j]= val; } //***сравнение и вывод for ( i= 0; i<MAX_WIDTH; i++ ) { for ( j= 0; j<MAX_HEIGHT; j++ ) { if ( m[i][j] == min_w[j] && m[i][j] == max_h[i] ) { printf( "m[%d][%d]=%d\n", i, j, m[i][j] ); found++; } } } if(!found) printf("0"); system("pause"); return 0; }
Что должны будут возвращать функции? У меня только списки приходят в голову
Решение задачи: «Разбить на подпрограммы программу, которая выводит на экран седловые точки матрицы»
textual
Листинг программы
void max_in_rows(int *max_h) { int i, j, val; for ( i= 0; i<MAX_WIDTH; i++ ) { val= m[i][0]; for ( j= 1; j<MAX_HEIGHT; j++ ) { if ( m[i][j]>val ) { val= m[i][j]; } } max_h[i]= val; } } void min_in_cols(int *min_w) { int i, j, val; for ( j= 0; j<MAX_HEIGHT; j++ ) { val= m[0][j]; for ( i= 1; i<MAX_WIDTH; i++ ) { if ( m[i][j]<val ) { val= m[i][j]; } } min_w[j]= val; } } /* ... main ... */ /* сравнение и вывод */ max_in_rows(max_h); min_in_cols(min_w); /* дальше - без изменений */
Объяснение кода листинга программы
Код, представленный вами, разделяет задачу поиска минимального и максимального значения в матрице на две подпрограммы.
- В функции
max_in_rows
происходит поиск максимального значения в каждом ряду матрицы.- В первой строке кода объявляются переменные
i
,j
иval
, которые будут использоваться в цикле. - Затем следует двойной цикл
for
, который проходит по всем элементам матрицы, начиная с первого столбца и до предпоследнего ряда. - Внутри двойного цикла переменной
val
присваивается значение первого элемента текущего ряда. - Затем второй цикл
for
проходит по всем элементам текущего ряда, начиная со второго элемента, и если встречает элемент, больший, чемval
, то обновляет значениеval
. - После завершения второго цикла, максимальное значение
val
записывается в соответствующий элемент массиваmax_h
. - В конце функции вызывается функция
max_in_rows
с аргументомmax_h
.
- В первой строке кода объявляются переменные
- В функции
min_in_cols
происходит поиск минимального значения в каждом столбце матрицы.- В первой строке кода объявляются переменные
i
,j
иval
, которые будут использоваться в цикле. - Затем следует двойной цикл
for
, который проходит по всем элементам матрицы, начиная со второго столбца и до предпоследней строки. - Внутри двойного цикла переменной
val
присваивается значение первого элемента текущего столбца. - Затем второй цикл
for
проходит по всем элементам текущего столбца, начиная со второго элемента, и если встречает элемент, меньший, чемval
, то обновляет значениеval
. - После завершения второго цикла, минимальное значение
val
записывается в соответствующий элемент массиваmin_w
. - В конце функции вызывается функция
min_in_cols
с аргументомmin_w
.
- В первой строке кода объявляются переменные
- В функции
main
вызываются функцииmax_in_rows
иmin_in_cols
для поиска максимального и минимального значения в матрице.- Затем значения выводятся на экран.
Обратите внимание, что код предполагает, что матрица
m
уже инициализирована. Кроме того, он не проверяет границы матрицы, поэтому предполагается, что матрицаm
не превышает размеровMAX_WIDTH
иMAX_HEIGHT
.
- Затем значения выводятся на экран.
Обратите внимание, что код предполагает, что матрица
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д