Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Алгоритм нахождения максимального






(минимального) элемента

Например, для данных, представленных в таблице, определим фамилию, должность и отдел сотрудника, отработавшего максимальное количество часов.

Суть алгоритма состоит в следующем. Предполагаем, что максимальное количество часов отработал сотрудник, записанный первым, т.е. во второй строке. Назовем его лидером. Он отработал 20 часов. Запомним количество часов, отработанное лидером, а также его фамилию, должность и отдел. Теперь, начиная со следующего сотрудника, т.е. с 3-го, будем сравнивать отработанные часы (записанные в 4-м столбце) с часами, отработанными лидером. Если у очередного сотрудника количество отработанных часов больше, чем у лидера, то этот сотрудник становится лидером. Запоминаем его количество часов, фамилию, должность и отдел. И так до конца таблицы. В результате лидером будет сотрудник, отработавший максимальное количество часов.

Словесное описание алгоритма

1) определим количество заполненных строк в 4-м столбце;

2) запомним количество часов, отработанное сотрудником из второй строки в переменной VMAX, его фамилию в переменной FMAX, должность – в переменной DMAX, отдел – в переменной OMAX (это наш лидер);

3) присвоим счетчику I первоначальное значение 3;

4) рассмотрим содержимое ячейки в I-й строке и в 4-м столбце, если содержимое больше (при поиске минимума меньше) VMAX, то лидер меняется, запоминаем данные о новом лидере в переменных VMAX, FMAX, DMAX, OMAX;

5) если просматриваемая строка не последняя, то увеличиваем значение счетчика на 1 и переходим к пункту 4, в противном случае печатаем данные о лидере.

 

Программное описание алгоритма.

Rem Опишем используемые переменные.


Dim N As Integer, I As Integer, VMAX As Single

Dim FMAX As String, DMAX As String, OMAX As String

 

Rem определяем количество заполненных ячеек на листе «Лист1» в ‘диапазоне D: D, результат сохраняем в переменной N

 

N=Application.CountA(Sheets(“Лист1”).Range(“D: D”))

запомним количество часов, отработанное сотрудником из второй строки в переменной VMAX, его фамилию в переменной FMAX, должность – в переменной DMAX, отдел – в переменной OMAX.

VMAX=Cells(2, 4): FMAX=Cells(2, 1): OMAX=Cells(2, 2) DMAX=Cells(2, 3)

‘открываем цикл со счетчиком I, изменяющимся от 3 до N, шаг 1,

‘ счетчику I присваивается значение 3

 

For I=3 to N

‘если значение элемента, расположенного в I-й строке и 4-м столбце ‘больше (при поиске минимума меньше, т.е. знак “< ”) VMAX, то запоминаем данные о новом лидере в переменных ‘VMAX, FMAX, DMAX, OMAX

 

If Cells(I, 4)> VMAX Then

VMAX=Cells(I, 4): FMAX=Cells(I, 1)

OMAX=Cells(2, 2): DMAX=Cells(2, 3)

‘закрываем условный оператор

End If

‘ закрываем цикл, к счетчику добавляется шаг (у нас 1), проверяется, ‘не превышено ли конечное значение счетчика, если не превышено,

‘к сумме добавляется значение очередного элемента, если превышено, ‘выполняется оператор, записанный после инструкции Next.

 

Next

‘ В ячейку с номером строки N+2, в столбец с номером 1 запишем

‘слово “Лидер”, в столбец с номером 2 запишем значение переменной ‘FMAX

 

Cells(N+2, 1) = “Лидер”: Cells(N+2, 2)=FMAX

 

‘ В ячейку с номером строки N+2, в столбец с номером 3 запишем значение ‘переменной OMAX, в столбец с номером 4 – значение переменной DMAX, в столбец с номером 5 – значение переменной VMAX

 

Cells(N+2, 3) = OMAX: Cells(N+2, 4)=DMAX: Cells(N+2, 5)=VMAX






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.