В массиве найти максимальный элемент с четным индексом.
Другая формулировка задачи: среди элементов массива с четными индексами, найти тот, который имеет максимальное значение.
В различных языках программирования индексация элементов выполняется по-разному. В одних первый элемент имеет индекс 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