В программе решается 4 подзадачи:
1. Заполнение двумерного массива;
2. Поиск минимального элемента в каждом столбце;
3. Поиск минимального элемента среди найденных минимальных элементов столбцов;
4. Сортировка столбца с минимальным элементом;
5. Вывод преобразованного массива.
Ввод элементов двумерного массива
Как оговаривалось в постановке задачи, ввод элементов двумерного массива будем осуществлять с помощью генератора случайных чисел. Возьмем, к примеру, интервал от -5 до 15. Тогда, используя формулу Random (b - a +1)+ a,получим Random(21)-5. Таким образом, каждый очередной элемент массива будет представлять собой целое число из диапазона [-5, 15] и выводится на экран. Цикл работает до достижения переменной i значения n, то есть до конца массива.
Алгоритм заполнения массива соответствующими числами указан ниже:
Поиск минимального элемента
в каждом столбце двумерного массива
Представим алгоритм поиска минимального элемента в каждом столбце двумерного массива. Для хранения значения минимума столбца возьмем переменную minst, для хранения его номера в массиве - imin.
Так как поиск элемента в массиве должен осуществляться по столбцам (т.е. по j), то он должен быть организован как внешний цикл. Зафиксировав номер столбца min:= a [1, j ], начинаем перебирать элементы построчно: i:= 2, n, 1. Когда все строки будут рассмотрены, в результате сравнения их друг с другом, будет найден самый наименьший элемент. Этот элемент выведем на экран. Все это можно представить в виде следующего фрагмента блок-схемы:
Поиск минимального элемента
среди найденных минимальных элементов столбцов
После того, как будет найден минимальный элемент в столбце, с помощью условия minst < min находимминимальный элемент среди минимальных элементов столбцов. Таким образом, в каждом прохождении цикла запоминается значение min:= minst и номер элемента imin:= j, который будет меньше всех предыдущих. Как только будут рассмотрены все элементы массива, значение минимального элемента и его номера будут выведены на экран.
Соответствующий алгоритм в виде блок-схемы можно представить следующим образом:
Сортировка столбца с минимальным элементом
Для сортировки (упорядочивания) столбца массива используем алгоритм сортировки обменом. Метод основан на том, что весь массив просматривается с конца и в том случае, если из двух соседних элементов «нижний» элемент меньше, чем «верхний», элементы меняются местами. Таким образом, самый меньший (самый «легкий») элемент оказывается ближе к началу массива («всплывает»). Отсюда и одно из названий метода - «пузырьковая» сортировка. Особенностью данного метода является сравнение, а затем, если нужно, и перестановка соседних элементов.
Вывод преобразованного массива
После сортировки выводим полученный массив на экран. Вывод элементов двумерного массива осуществляется при помощи цикла с параметром.
Блок-схема алгоритма
|
РАЗРАБОТКА ПРОГРАММЫ
НА ЯЗЫКЕ PASCAL
Программа начинается со служебного слова Program, после которого следует заголовок программы. В данном случае это Primer.
Далее включаем раздел Uses для использования модуля CRT, который применяется для управления работой экрана в текстовом режиме.
После названия программы и идентификации используемых модулей следует раздел объявления констант (const) и переменных (var).
В данной программе в разделе констант объявлены константы n =4 (количество строк массива) и m = 5 (количество столбцов массива).
В разделе переменных описан целочисленный массив под именем a, целочисленные переменные i, j – счетчики циклов, min – минимальный элемент, imin – индекс минимального элемента, minst – минимальный элемент столбца, k – вспомогательная переменная для сортировки элементов.
Тело программы или раздел операторов начинается со слова begin и заканчивается end. В этом разделе описываем действия, которые должна выполнить программа согласно выбранного алгоритма.
Так как в программе подразумевается ввод данных с экрана и вывод полученных результатов на экран, перед началом программы его необходимо очистить от ненужной информации. Это проделывает процедура clrscr, которая описана в модуле Crt.
Перед первым обращением к функции random необходимо с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа.