Поиск максимального элемента массива
Довольно-таки типичная задача для большого количества данных — поиск максимума. Например, в списке успеваемости учеников класса найти самого прилежного. Иначе говоря, требуется выбрать наибольшее значение среднего балла и указать фамилию ученика.
Пример 8.3.
Программа поиска максимального элемента в массиве и его индекса (см. блок-схему, алгоритма на рис. 8.5)
Program Maximum;
const
N=10;
type
Mas=array [1..N] of integer;
var
A: Mas;
i: integer; { Счетчик.цикла }
Мах: integer; { Переменная для хранения величины максимального элемента }
Imax: integer; { Переменная для хранения индекса максимального элемента }
begin { Тело программы }
{ Заполним элементы массива значениями датчика случайных чисел и выведем весь получейный массив на экран в одном цикле }
Randomize;
for i:= 1 to N do
begin
A[i]:= -50+Random(101);
write(A[i]:5)
end;
writein:
{ V. Поиск максимального элемента и его индекса в массиве }
Imax:=l: { Сначала считаем, что первый элемент массива и есть максимальный }
Мах:=А[1]; { Его индекс и величину записываем соответственно в переменные Imax и Мах }
for i: = 2 to N do { Сравним нашего кандидата в максимумы со всеми остальными элементами массива (со второго до последнего) }
if Мах < A[i] then { Если наш кандидат в максимумы оказался меньше текущего элемента... }
begin
Max:=A[i]; { ... то будем считать теперь кандидатом в максимумы текущий элемент}
Imax:=i { Запомним его значение и индекс в переменных Мах и Imax }
end;
writeln ('Максимальный элемент в массиве=', Мах:5);
writeln('Его индекс=', Imах:5);
readln
end.
Рис. 8.5. Блок-схема алгоритма поиска максимального элемента массива и его индекса
Заметим, что в процессе поиска максимума не обязательно хранить обе величины — номер максимума и его значение. Достаточно хранить одну, в зависимости от поставленной задачи.
Если индекс максимума не нужно знать, достаточно будет переменной Мах. Если, наоборот, нужен только номер — достаточно Imax.
Тонкость состоит в том, что если нужно найти и то и другое, все равно достаточно найти только Imax, ведь значение максимума легко может быть получено по его индексу (A[Imax]).
Иными словами, нашу программу можно упростить следующим образом:
Пример 8.4.
Программа поиска максимума, не хранящая значение максимума, а запоминающая только его номер
Program Maximum2;
const
N=10;
type
Mas=array [1..N] of integer;
var
A: Mas;
i, imax: integer;
begin
Randomize;
for i:= 1 to N do
begin
A[i]:=-50+Random(101);
write(A[i]:5)
end;
writeln;
{ V. Поиск индекса максимального элемента в массиве }
imax:=l;
for i := 2 to N do
if A[imax] < A[i] then
imax:=i;
writeln ('Максимальный элемент в массиве=', A[imax]:5);
writeln('Его индекс=',imax:5);
readln
end.
Задание 8.5.
Выполните поиск максимальйого и минимального элемента в массиве за один цикл (блок-схема алгоритма показана на рис. 8.6).
Рис. 8.6. Блок-схема алгоритма поиска индексов максимального и минимального элементов массива за один цикл
Задание 8.6.
В одномерном массиве из 10 элементов определить местоположение минимального элемента. Обнулить элементы, стоящие до него, но не сам этот элемент. (Обнулить — значит записать 0 на место элемента, то есть выполнить A[i] := 0.) Измененный массив вывести на экран.
Задание 8.7.
В одномерном массиве из 10 элементов определить местоположение минимального и максимального элементов. Обнулить элементы, стоящие между ними, а также сами эти элементы.
<< Назад В начало Далее >>
Комментарии:
2013-11-13 ответил Николай
Круто, че.
2014-04-01 ответил к
тупость
2014-05-13 ответил Виктор
хуйня паскаль
2014-10-11 ответил Витор
Вы правы, но основы программирования на нем изучать - самое то. Весьма простой и доступный язык
2014-12-18 ответил маша
помогите найти наибольший элемент таблицы в паскале раз это просто
2015-11-13 ответил Дарья
Помогает, но мы решаем не так, и поэтому учитель зачтет как не правильное(
2016-12-14 ответил Саша
А можно в интернете найти где просто найти максимум масива, без всяких дополнений
2017-03-22 ответил Пень
Лес уже не тот
Добавить свой комментарий:
|
|