Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Задача 52. Использование вспомогательных алгоритмов. Обработка отдельных столбцов матрицы

Поиск

Условие задачи. Дана матрица А. Найти минимальный элемент в том столбце матрицы, в котором среднее арифметическое элементов самое большое.

В данной задаче исходным данным является матрица вещественных чисел А. Её размер в условии не определён. Поэтому число строк и число столбцов матрицы (целочисленные n и m) также являются исходными данными и должны вводиться пользователем. Результатом будет минимальный элемент min в том столбце матрицы, в котором среднее арифметическое элементов самое большое. Для получения результата надо сначала вычислить среднее арифметическое элементов во всех столбцах, затем определить номер столбца с наибольшим средним и уже в этом столбце найти минимальный элемент. Поэтому для решения задачи можно использовать несколько вспомогательных алгоритмов:

· ввод матрицы In_matr;                                                                   

· вычисление среднего арифметического элементов в одном, любом, столбце Sredn;

· определение номера столбца с максимальным средним арифметическим J _ max;

· поиск минимального элемента в искомом столбце Min _ el.

Вспомогательный алгоритм In_matr(A, n, m) выполняет ввод элементов матрицы А.

 Входными данными будут количество строк n и количество столбцов m матрицы, а выходным параметром будет исходная матрица A. В этом алгоритме для обхода всех элементов матрицы использована конструкция вложенных циклов. Чтобы вводить элементы матрицы в порядке их следования по строкам, внешний цикл надо организовать по строкам, а внутренний - по столбцам.

Вспомогательный алгоритм Min _ el (A, n, j ) предназначен для поиска минимального элемента в одном столбце с любым номером.

Входными параметрами будут матрица A, количество её строк n  и номер столбца j, в котором надо найти минимальный элемент. В этом алгоритме будет использован цикл с известным числом повторений для поиска минимального элемента в столбце по рассмотренному ранее алгоритму. Минимальный элемент min будет результатом работы вспомогательного алгоритма и будет передан в вызывающий алгоритм.

Вспомогательный алгоритм Sredn (A, n, m, j) предназначен для вычисления среднего арифметического в одном столбце матрицы

Входными данными будут матрица A, количество её строк n, столбцов   m и номер столбца j, в котором ищется результат, а выходным параметром будет значение среднего арифметического всех элементов данного столбца Sredn. В этом алгоритме будет использована конструкция цикла с предопределённым числом повторений для получения суммы элементов столбца путем перебора строк. Полученная сумма будет поделена на количество строк, и результат будет передан в вызывающий алгоритм.

Вспомогательный алгоритм J _ max (A, n, m) предназначен для поиска номера столбца с максимальным средним арифметическим.

Входными параметрами будут матрица A, количество её строк n и столбцов m, а выходным параметром будет значение номера столбца, в котором среднее арифметическое всех элементов наибольшее J _ max. Чтобы найти искомый номер столбца, надо воспользоваться известным уже алгоритмом поиска максимума, в котором до цикла за начальное значение максимума принимается значение среднего в первом столбце, полученное как результат вспомогательного алгоритма Sredn (A, n, m, j), и запоминается его номер столбца. Исходными данными для первого вызова будут матрица A, количество строк n,  количество столбцов m и номер первого столбца. В цикле с параметром, который изменяется от номера второго столбца до последнего, вызывается вспомогательный алгоритм получения среднего арифметического в текущем столбце. В него будут передаваться матрица A, количество строк n, количество столбцов m и текущий номер столбца j. Среднее арифметическое текущего столбца сравнивается с максимальным значением и если оно окажется больше максимального, то им заменяется значение максимума и запоминается его номер.

Если надо, чтобы результат одного вспомогательного алгоритма использовался в другом алгоритме, возможны разные варианты организации их вызовов.

Главный алгоритм может последовательно один за другим вызывать вспомогательные алгоритмы, получая результат одного алгоритма и передавая его другому как входное данное. Обращение к одному алгоритму (если это функция) можно указать в качестве входного данного для другого алгоритма, и это также будет означать передачу результата первого алгоритма второму как входного данного. Можно обращаться из одного вспомогательного алгоритма к другому и использовать его выходное значение. В данной задаче будут использоваться все три варианта.

В главном алгоритме сначала вводится число строк n и число столбцов m матрицы А.  

Затем вызывается вспомогательный алгоритм In_matr(A, n, m) для ввода элементов матрицы. Входными данными для этого алгоритма будут количество строк n и количество столбцов m. Выходным значением будет матрица А.

 Далее будет выполняться вызов вспомогательного алгоритма Min _ el (A, n, J _ max (a, n, m)) для поиска минимального элемента в искомом столбце. Входными данными для этого алгоритма будут матрица, количество строк n и третьим параметром будет вызов вспомогательного алгоритма J _ max (A, n, m), результатом которого будет номер столбца с наибольшим средним. Выходное значение вспомогательного алгоритма Min _ el (A, n, j) сохранится в переменной min, значение которой и будет выведено на экран. 



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 113; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.15.34 (0.006 с.)