Главная / Разработка алгоритмов / Циклический алгоритм с ветвлением
Циклический алгоритм с ветвлением
Задание. Имеется массив X из n элементов. Количество элементов в массиве (n) известно. Необходимо найти элемент с максимальным значением и определить его порядковый номер (i) в этом массиве.
Решение.
Для решения этой задачи необходимо:
- разработать проект рабочего листа Excel;
- разработать и описать блок-схему алгоритма;
- разработать и отладить программу;
- выполнить вычисления.
Рассмотрим подробнее каждый из этих этапов.
1.Проект рабочего листа Excel.
Предусмотрим на рабочем листе Excel места для ввода исходных данных и вывода результатов вычислений (рис. 1).
Входной информацией является массив Х (столбец А) и количество элементов в массиве n (ячейка F1). Результатом решения задачи является максимальное значение в массиве (Хmax) и порядковый номер (imax) этого максимального значения (ячейки F7 и F8). Для решения задачи будут созданы две процедуры, которые будут запускаться с помощью кнопок CommandButton1 и CommandButton2. Первая процедура будет создавать пользовательский интерфейс, то есть все надписи в ячейках А1, E1, E2, E6. Вторая процедура будет выполнять, ввод данных из таблицы Excel, все необходимые вычисления и вывод результатов (Xmax, imax).
2. Блок-схема алгоритма.
Блок-схема алгоритма представлена на рис. 2.
В блок-схеме приняты следующие обозначения:
n - количество элементов в массиве; Xmax – текущее максимальное значение элемента массива из числа уже проверенных; imax – порядковый номер текущего максимального значения элемента массива. Ниже представлено описание некоторых блоков алгоритма.
3. Программа для реализации алгоритма.
Программа для реализации представленного циклического алгоритма с ветвлением состоит из двух процедур.
Первая процедура:
Private Sub CommandButton1_Click() Range("a1") = "X"Range("E1") = "Укажите количество элементов в массиве:"
Range("E2") = "n="
Range("E6") = "Результат:"
Range("E7") = "Xmax="
Range("E8") = "imax="
End Sub
Вторая процедура:
Private Sub CommandButton2_Click()n = Range("F2")
Range("A2").Select
Xmax = ActiveCell
imax = 1
For i = 1 To n
X = ActiveCell
If X > Xmax Then
Xmax = X
imax = i
End If
ActiveCell.Offset(1, 0).Select
Next i
Range("F7") = Xmax
Range("F8") = imax
Range("E7:F8").Select
End Sub