Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
7.6. Нахождение максимального элемента массиваДля поиска максимального элемента массива и определения его номера нам потребуются две дополнительные переменные. В первой из них будет храниться само максимальное значение, а во второй – его индекс. Поиск максимального элемента в массиве традиционно начинают с элемента, имеющего номер ноль. Затем организуют цикл, в котором анализируют все элементы массива, кроме начального. Если значение какой-либо элемента массива окажется больше ранее найденного максимума, то значение максимума необходимо обновить, сделав равным этому элементу. Сразу же происходит и запоминание номера элемента массива, в котором найдено новое максимальное значение. Рассмотрим особенности программной реализации этого алгоритма. Объявляем необходимые переменные. Переменная max предназначена для хранения значения максимального элемента. Ее тип всегда должен совпадать с типом элементов массива. В переменной imax мы будем запоминать номер максимального элемента массива. Эта переменная всегда будет иметь целочисленный тип. Dim max, imax As Integer Поиск максимального элемента начинает с элемента, имеющего номер ноль. Записываем значение этого элемента в переменную max. max = a(0) Соответственно в переменную imax мы записываем номер этого элемента, то есть ноль. imax = 0 Так как сравнение нулевого элемента с самим собой не даст нам никакой новой информации, то основной цикл мы должны начать не с нулевого элемента, а с первого. For i = 1 To n На каждом шаге цикла анализируем значение очередного элемента массива. If a(i) > max Then Если это значение больше, чем значение ранее найденного максимума, то необходимо обновить значение максимума (переменной max), записав в него значение этого элемента. max = a(i) Сразу же запоминаем индекс этого элемента массива. imax = i End If Next После завершения цикла нам остается только вывести полученные результаты в окно списка. Сначала выведем горизонтальную черту, чтобы зрительно отделить исходные данные от полученных результатов. lstA.Items.Add("-------------------------------") Выводим значение максимального элемента. lstA.Items.Add("Максимальное = " + Str(max)) Выводим номер максимального элемента. lstA.Items.Add("Его номер = " + Str(imax)) Полный текст программы представлен в приложении 25. Пример работы программы приведен на рис. 40. Рис. 40. Пример работы программы нахождения максимального элемента массива и его номера 7.7. Нахождение минимального элемента массива, удовлетворяющего некоторому условиюПри внешней схожести с задачей, рассмотренной в предыдущем разделе, задача поиска минимального элемента массива, удовлетворяющего некоторому условию (например, кратного трем), решается несколько иначе. Так как значения элементов массива заранее неизвестны, то мы не можем начать поиск с какого-то конкретного элемента. Более того, возможна ситуация, когда в исходном массиве не будет ни одного элемента, удовлетворяющего поставленному условию. Поэтому поиск нужного элемента и его номера организуется также как и при обработке совокупности чисел. Начальное значение минимума полагается равным некоторому достаточно большому числу. Начальное значение номера берется за пределами массива, например, -1. Элементы массива анализируются подряд, начиная с нулевого. Рассмотрим особенности программной реализации алгоритма поиска минимального элемента массива, кратного трем, и его номера. Объявляем необходимые переменные. Переменная min предназначена для хранения значения минимального элемента, кратного трем. Ее тип всегда должен совпадать с типом элементов массива. В переменной imin мы будем запоминать номер найденного элемента массива. Эта переменная всегда будет иметь целочисленный тип. Dim min, imin As Integer Так как в процессе обработки элементов массива значение минимума будет уменьшаться, то начальное значение для переменной min надо задать достаточно большим. min = 100000 Начальное значение переменной imin зададим равным -1 (то есть за пределами массива), чтобы показать, что мы пока не нашли ни одного элемента, удовлетворяющего поставленному условию. imin = -1 Организуем цикл для обработки всех элементов массива. Цикл должен начать свою работу с нулевого элемента массива. Поэтому начальное значение счетчика – ноль. For i = 0 To n На каждом шаге цикла проверяем значение очередного элемента массива. If a(i) Mod 3 = 0 And a(i) < min Then Если значение элемента массива без остатка делится на 3, значит, этот элемент кратен трем. Если при этом он меньше ранее найденного минимума, то значение минимума необходимо обновить, записав в него значение текущего элемента массива. min = a(i) Сразу же запоминаем номер этого элемента массива. imin = i End If Next После завершения цикла нам необходимо вывести полученные результаты в окно списка. Сначала выводим горизонтальную строку, чтобы зрительно отделить результаты от исходных данных. lstA.Items.Add("-------------------------------") Анализируем значение переменной imin. If imin = -1 Then Если после цикла значение переменной imin осталось равным -1, значит, в массиве нет ни одного элемента, кратного трем. Поэтому вместо ответа выводим поясняющий текст. lstA.Items.Add("Нет чисел, кратных 3") Else В противном случае выводим найденные значения: минимальный элемент массива, кратный трем, и его номер. lstA.Items.Add("Минимальное кратное трем =" + _ Str(min)) lstA.Items.Add("Его номер = " + Str(imin)) End If Полный текст программы представлен в приложении 26. Примеры работы программы при различных исходных данных приведены на рис. 41. Рис. 41. Примеры работы программы поиска минимального элемента массива, кратного трем, и его номера |