Разбить на подпрограммы программу, которая выводит на экран седловые точки матрицы - 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);
 
/* дальше - без изменений */

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

Код, представленный вами, разделяет задачу поиска минимального и максимального значения в матрице на две подпрограммы.

  1. В функции max_in_rows происходит поиск максимального значения в каждом ряду матрицы.
    • В первой строке кода объявляются переменные i, j и val, которые будут использоваться в цикле.
    • Затем следует двойной цикл for, который проходит по всем элементам матрицы, начиная с первого столбца и до предпоследнего ряда.
    • Внутри двойного цикла переменной val присваивается значение первого элемента текущего ряда.
    • Затем второй цикл for проходит по всем элементам текущего ряда, начиная со второго элемента, и если встречает элемент, больший, чем val, то обновляет значение val.
    • После завершения второго цикла, максимальное значение val записывается в соответствующий элемент массива max_h.
    • В конце функции вызывается функция max_in_rows с аргументом max_h.
  2. В функции min_in_cols происходит поиск минимального значения в каждом столбце матрицы.
    • В первой строке кода объявляются переменные i, j и val, которые будут использоваться в цикле.
    • Затем следует двойной цикл for, который проходит по всем элементам матрицы, начиная со второго столбца и до предпоследней строки.
    • Внутри двойного цикла переменной val присваивается значение первого элемента текущего столбца.
    • Затем второй цикл for проходит по всем элементам текущего столбца, начиная со второго элемента, и если встречает элемент, меньший, чем val, то обновляет значение val.
    • После завершения второго цикла, минимальное значение val записывается в соответствующий элемент массива min_w.
    • В конце функции вызывается функция min_in_cols с аргументом min_w.
  3. В функции main вызываются функции max_in_rows и min_in_cols для поиска максимального и минимального значения в матрице.
    • Затем значения выводятся на экран. Обратите внимание, что код предполагает, что матрица m уже инициализирована. Кроме того, он не проверяет границы матрицы, поэтому предполагается, что матрица m не превышает размеров MAX_WIDTH и MAX_HEIGHT.

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


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

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

13   голосов , оценка 3.538 из 5
Похожие ответы