Максимальный из элементов массива с четными индексами

В массиве найти максимальный элемент с четным индексом.

Другая формулировка задачи: среди элементов массива с четными индексами, найти тот, который имеет максимальное значение.

В различных языках программирования индексация элементов выполняется по-разному. В одних первый элемент имеет индекс 1 (например, в Паскале и КуМире), в других — 0 (Python, C, Basic).

Таким образом, в одних языках элементами с четными индексами будут второй, четвертый, шестой и т. д. В других языках четные индексы будут у первого, третьего, пятого и т. д. элементов.

Для поиска максимума только среди четных (или среди нечетных) индексов необходимо при переборе массива в цикле использовать шаг, равный 2.

Предположим, что первый элемент с четным индексом и есть максимальный. Присвоим его индекс переменной max. Перебор начнем с индекса i = max + 2 до конца массива (N).

В цикле будем сравнивать значение очередного элемента со значением элемента по индексу max. Если текущий элемент больше, то запишем его индекс в max.

Pascal

const N = 10;
var
a: array[1..N] of integer;
i, max: byte;

begin
randomize;
for i:=1 to N do a[i]:=random(100);
for i:=1 to N do write(a[i]:3);
writeln;
max := 2;
i := 4;
while i <= N do begin
if a[i] > a[max] then
max := i;
i := i + 2;
end;
writeln('№ ',max,' = ',a[max]);
end.



28 45 48 10 1 85 47 53 32 36
№ 6 = 85


В языке Pascal цикл for не имеет шага, поэтому при решении данной задачи используется цикл while, в теле которого счетчик i увеличивается на 2.

Задачу можно решить через цикл for, предусмотрев в его теле проверку индекса элемента на четность (например так: if odd(i) = false then ... ).
Язык Си

#include
#define N 10

main() {
int a[N];
int i, max;
for (i=0; i printf("%3d", i);
}
printf("\n");
srand(time(NULL));
for (i=0; i a[i] = rand() % 100;
printf("%3d", a[i]);
}
printf("\n");

max = 0;
for (i=2; i if (a[i] > a[max]) max = i;
printf("%d: %d\n",max,a[max]);
}



0 1 2 3 4 5 6 7 8 9
37 81 23 91 66 36 59 6 25 57
4: 66

Python
максимальный элемент с четным индексом Python

from random import random
N = 10
arr = [0] * N
for i in range(N):
arr[i] = int(random() * 100)
print(arr)
m = 0
for i in range(2,N,2):
if arr[i] > arr[m]:
m = i
print(m,'-',arr[m])



[42, 25, 94, 79, 86, 51, 99, 70, 74, 25]
6 - 99

КуМир

алг макс с чет индексами
нач
цел N = 10
цел таб arr[1:N]
цел i,m
нц для i от 1 до N
arr[i] := irand(10,99)
вывод arr[i]:3
кц
вывод нс

m := 2
нц для i от 4 до N шаг 2
если arr[i] > arr[m] то
m := i
все
кц
вывод m,'-', arr[m]
кон



69 30 80 54 55 82 64 85 34 77
8-85

Basic-256

N = 10
dim arr(N)
for i=0 to N-1
arr[i] = int(rand*100)
print arr[i] + " ";
next i
print

m = 0
for i=2 to N-1 step 2
if arr[i] > arr[m] then
m = i
endif
next i
print m+"-"+arr[m]



49 12 1 37 96 47 70 1 5 66
4-96

Оцените статью
Добавить комментарий