Максимальный элемент массива

advertisement
1
Программирование
на языке Паскаль
Максимальный
элемент массива
2
Максимальный элемент
Задача: найти в массиве максимальный элемент.
Алгоритм:
Псевдокод:
{ считаем, что первый элемент – максимальный }
for i:=2 to N do
if a[i] > { максимального } then
{ запомнить новый максимальный элемент a[i] }
?
Почему цикл от i=2?
3
Максимальный элемент
Дополнение: как найти номер максимального элемента?
max := a[1]; { считаем, что первый – максимальный }
iMax := 1;
for i:=2 to N do
{ проверяем все остальные }
if a[i] > a[iMax]
max
then { нашли новый максимальный }
begin
max := a[i];
{ запомнить a[i] }
iMax := i;
{ запомнить i }
end;
?
Как упростить?
По номеру элемента iMax всегда можно найти его значение
a[iMax]. Поэтому везде меняем max на a[iMax] и убираем
переменную max.
Программа
program qq;
const N = 5;
var a: array [1..N] of integer;
i, iMax: integer;
begin
случайные числа в
writeln('Исходный массив:');
интервале [50,150)
for
i:=1
to
N
do
begin
for i:=1 to N do begin
a[i]:=:=random(100)
random(100)+ +50;
50;
a[i]
поиск
write(a[i]:4);
write(a[i]:4);
максимального
end;
end;
iMax :=
:= 1;
{ считаем,
считаем, что
что первый
первый –
– максимальный
максимальный }
}
iMax
1; {
for i:=2
i:=2 to
{ проверяем
все остальные
остальные }
for
to N
N do
do
{
проверяем все
}
if a[i]
a[i] >
> a[iMax]
новый максимальный
максимальный }
}
if
a[iMax] then
then {
{ новый
iMax :=
:= i;
i;
{
запомнить i
i }
iMax
{ запомнить
}
writeln; {перейти на новую строку}
writeln('Максимальный элемент a[', iMax, ']=', a[iMax]);
end;
4
5
Задания
"4": Заполнить массив из 10 элементов случайными числами в
интервале [-10..10] и найти в нем максимальный и
минимальный элементы и их номера.
Пример:
Исходный массив:
4
-5
3 10 -4 -6 8 -10 1 0
максимальный a[4]=10
минимальный a[8]=-10
"5": Заполнить массив из 10 элементов случайными числами в
интервале [-10..10] и найти в нем два максимальных
элемента и их номера.
Пример:
Исходный массив:
4
-5
3 10 -4 -6 8 -10
максимальные a[4]=10, a[7]=8
1
0
•
Найти максимальный (минимальный) элемента
массива, а также его порядковый номер.
program prim3;
uses crt;
var i,n,r,max,min,imax,imin:integer;
a:array[1..10000] of integer;
begin
clrscr;
randomize;
write('число элементов n= ');
readln(n);
for i:=1 to n do
begin
a[i]:=random(45)-22;
{Получаем случайные числа и выводим их на экран.}
write(a[i],' ');
end;
{За начальный максимум (минимум) берем первый элемент массива.}
min:=a[1]; max:=a[1];
for i:=1 to n do
begin
{Если найдется элемент, меньший MIN, то MIN будет равен этому элементу. Одновременно
запоминаем индекс промежуточного минимума.}
if a[i]<=min then
begin
min:=a[i]; imin:=i;
end;
{Если найдется элемент, больший МАХ, то МАХ будет равен этому элементу. Одновременно
запоминаем индекс промежуточного максимума.}
if a[i]>= max then
begin
max:=a[i]; imax:=i;
end;
end;
{Печатаем минимальный элемент и его индекс.}
writeln(' наименьший=' , min,' номер' , imin);
{Печатаем максимальный элемент и его индекс.}
writeln(' наиболльший' , max, ' номер' ,imax);
readkey;
end.
Download