Поиск мин-макс элемента в одномерном массиве

Поиск минимального, максимального элемента массива, поиск его индекса.
Часто при работе с массивами возникает задача поиска минимального(максимального) значения массива и указания его порядкового номера.
Если провести аналогию со школой, то мы получаем примерно следующую задачу.
Дан набор температур за весенний месяц (30 дней.). Найти минимальную температуру и указать порядковый номер дня, когда она была.
Как это решить программным способом, рассмотрим далее…

Рассмотрим переменные для решения задачи:
У нас 30 дней: const count_day=30;
Массив: Var Temperature [1.. count_day] of integer;
Счетчик I: integer; для просмотра всех дней
Переменные для результата: MinTemperature, DayMinTemperature:integer;

Разобьем задачу на блоки:
1. Объявление переменных.
2. Заполнение массива случайными числами.
3. Инициализация начальных переменных.
4. Просмотр массива и поиск нужных значений.
5. Вывод результата.
Итак:
1. Объявление переменных

const count_day=30;
Var Temperature [1.. count_day] of integer;
I: integer;
MinTemperature, DayMinTemperature:integer;

2. Заполнение массива случайными числами.

 randomize;
 for i := 1 to count_day do
 begin
 temperature[i] := random(5) + 10;
 writeln('День ', i, ' температура = ', Temperature[i]);
 end;

Почему temperature[i] := random(5) + 10. Дело в том, что весной температура в среднем 10 градусов. Добавим для разброса еще random(5).
3. Инициализация начальных переменных.

 MinTemperature := Temperature[1];
 DayMinTemperature := 1;

За минимальную температуру примем значение в 1 день и порядковый номер мин. температуры возьмем тоже 1.
4. Просмотр массива и поиск нужных значений.

 for i := 2 to count_day do
 if temperature[i] < MinTemperature then begin
 MinTemperature := temperature[i];
 DayMinTemperature := i;
 end;

Просматриваем все остальные дни. Если находим что то меньшее — запоминаем новое значение температуры и порядковый номер дня.
5. Вывод результата.

 writeln; 
 writeln('Минимальная температура=', MinTemperature, ' День=', DayMinTemperature);
 writeln ('Press Enter to Exit');
 readln;

А теперь все вместе:

const
 count_day = 30;

var
 Temperature: array [1..count_day] of integer;
 I: integer;
 MinTemperature, DayMinTemperature: integer;

BEGIN
 randomize;
 for i := 1 to count_day do
 begin
 temperature[i] := random(5) + 15;
 writeln('День ', i, ' температура = ', Temperature[i]);
 end;
 
 MinTemperature := Temperature[1];
 DayMinTemperature := 1;
 
 for i := 2 to count_day do
 if temperature[i] < MinTemperature then begin
 MinTemperature := temperature[i];
 DayMinTemperature := i;
 end;
 writeln; 
 writeln('Минимальная температура=', MinTemperature, ' День=', DayMinTemperature);
 writeln('Press Enter to Exit');
 readln;
 
END.

Для самостоятельного решения предлагаю написать программу поиска максимальной летней температуры (25<Т<35) и указания порядковых номеров дней когда она была. Результат оформить в виде: Максимальная температура = 25. Была: 1, 14, 17, 29 дня.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии