Поиск максимального (минимального) элемента в массиве

advertisement
Поиск максимального (минимального) элемента в массиве
Вариант 1.В самом простом варианте эта задача решается очень легко:
1.
Заполняем массив одним из возможных способов (с
клавиатуры, с помощью датчика случайных чисел);
2.
За максимальный элемент берем первый;
3.
Начиная со второго элемента, просматриваем все элементы,
сравнивая их с максимальным;
4.
Если находится элемент более максимального, меняем
значение максимального на найденный элемент;
5.
Выводим на экран максимальный элемент.
6.
Текст программы :
Program Maxim1;
Const n=10;
Var a: array [1..n] of unteger;
Max, i:integer;
Begin
For i:=1 to n do readln(a[i]);
Max:=a[1];
For i:=2 to n do
If a[i]>max then max:=a[i];
Writeln(max);
End.
Т.о. будет найден первый максимальный элемент в массиве целых чисел,
если их там несколько, или просто максимальный элемент, если он там один.
Если использовать в сравнении операцию >=, то в случае, когда
максимальных элементов несколько, буде найден последний из них.
Подумайте, почему?
Очевидно, что поиск минимального элемента осуществляется точно так же, с
заменой на операцию сравнения < или <=.
Вариант 2. На поиск максимального элемента накладывается
дополнительное условие. Например, найти максимальный элемент среди
четных элементов массива.
В этом случае нельзя просто в качестве максимального взять первый
элемент, т.к. он может оказаться нечетным и очень большим по значению.
Тогда никакой более элемент этого массива не будет больше него, в том
числе и четный. В этом случае за максимальный элемент надо взять первый
встретившийся вам четный и от него вести поиск максимального четного.
Текст программы:
Program Maxim2;
Const n=10;
Var a: array [1..n] of unteger;
Max, i,j:integer;
Begin
For i:=1 to n do readln(a[i]);
I:=1;
While (i<=n) and (a[i] mod 2<>0) do i:=i+1; {пока мы находимся внутри
массива и встречаем нечетный элемент, просто продвигаемся вперед}
If i<=n then
Begin
Max:=a[i]; {мы не вышли за границы массива и нашли первый четный,
запоминаем его в max}
for j:=i+1 to n do
{просматриваем элементы со следующего номера, для
этого используем другую переменную – j, и ищем среди них четный
максимальный }
if (a[j]mod 2=0) and (a[j]>max) then max:=a[j];
writeln (max);
end
else
writeln (‘dostignut konec massiva’);
End.
Вариант 3. В условии задачи задан диапазон представления элементов
массива. Например, задан массив натуральных чисел, которые не
превосходят 10000. Найти среди них минимальный элемент нечетный
элемент.
Очевидно, что числа в массиве лежат в диапазоне от 1 до 10000. В этом
случае за минимальный элемент мы возьмем максимальное невозможное
значение, т.е. 100001 (Нечетное! Если бы требовалось искать максимум
среди четных, взяли 10002).
Текст программы:
Program Maxim3;
Const n=10;
Var a: array [1..n] of unteger;
Min, i:integer;
Begin
For i:=1 to n do readln(a[i]);
Min:=10001;
For i:=1 to n do
If (a[i]mod 2<>0) and (a[i]<min) then min:=a[i];
Writeln(min);
End.
Искать максиму надо от минимального невозможного значения.
Download