Нахождение минимального и максимального элементов массива
Задача: Найти максимальный и минимальный элементы численного массива.
Алгоритм решения задачи:
Значения, составляющие массив, могут быть получены из разных источников: путем вызова функции random, ввода значений пользователем, считывания из файла.
В задачах подобного рода (поиск максиму или минимума) может быть поставлена цель, найти только 1) индекс элемента, 2) только значение или 3) и то и другое. В программе ниже используется третий вариант.
Неплохо бы, чтобы при запуске программы весь массив выводился на экран. В этом случае пользователь может оценить правильность работы программы.
- В переменной maxB хранится текущее максимальное значение массива, а в Nmax – его позиция (индекс).
- В переменной minB хранится текущее минимальное значение массива, а в Nmin – его позиция (индекс).
- В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый цикл for) и непосредственно поиск максимума и минимума (второй цикл for).
- Изначально делается предположение, что первый элемент массива и есть максимум или минимальный элементы. Поэтому переменной maxB и minB присваивается непосредственно значение, хранящееся в первой ячейке массива , а Nmax и Nmin – значение 1 (т.е. указатель на первый элемент массива).
- Начиная со второго элемента, каждое очередное значение массива maxB сравнивается с текущим значением. В случае, если текущее значение массива больше, чем хранящиеся в Nmax, происходит новое присваивание обоим переменным текущего значения и индекса.
- Так же начиная со второго элемента, каждое очередное значение массива minB сравнивается с текущим значением. В случае, если текущее значение массива меньше, чем хранящиеся в Nmin, происходит новое присваивание обоим переменным текущего значения и индекса.
program P3;
const n = 20;
var B: array[1..n] of byte;
maxB, Nmax, minB, Nmin: byte;
i: byte;
begin
for i := 1 to n do begin
read(B[i]);
write (B[i],' ');
end;
Nmax:= 1;
maxB:=B[1];
Nmin:= 1;
minB:=B[1];
for i := 2 to n do
if B[i]>maxB then
begin
maxB:= B[i];
Nmax:= i;
end;
if B[i]>minB then
begin
minB:= B[i];
Nmin:= i;
end;
writeln;
writeln ('Максимальный элемент= ', maxB, ' его номер= ', Nmax);
writeln ('Минимальный элемент= ',minB, ' его номер= ', Nmin);
end.
Вариант с досрочным выходом:
nX:= 0;
for i:=1 to N do
if A[i] = X then begin
nX:= i;
break; //досрочный выход из цикла
end;
if nX > 0 then
write('A[',i,']=',X)
else write('Не нашли!');