Explanation
Your code has two problems. The first is, as others have already pointed out, that you start with Integer.MAX_VALUE
as initial guess, which is the wrong logic.
You need to use the worst possible largest value as an initial guess. Otherwise your elements will always be smaller, and thus your initial guess is the biggest element. That’s why we start by guessing MIN_VALUE
as largest element. Since the elements of the array can then only get larger. Just play the algorithm on paper for a small example like {1, 2}
and you see why that makes sense.
The second problem is that you are actually considering all values, but you only wanted to consider the even values. We easily fix that by skipping all odd values.
Code
Here is your code with both fixes:
public static void main(String[] args) {
int[] a = new int[]{10, 46, 78, 32, 3, 80, 92, 11, 39, 57};
System.out.println(Arrays.toString(a));
// Start with lowest value as initial guess
int largest = Integer.MIN_VALUE;
for (int number : a) {
// Skip number if odd
if (number % 2 == 1) {
continue;
}
// Now we only consider and collect even numbers
if (number > largest) {
// Update the current guess
largest = number;
}
}
// We now considered all elements, the guess is
// final and correct.
// And also even since we skipped odd values.
System.out.println(largest);
}
Notes
If the array does not contain any even number, then the output will be Integer.MIN_VALUE
, you might consider this special case and catch it with some if
clause.
Others suggest using an element of the array as initial guess. Since you only want even values, you may only consider using even values of the array for this initial guess. Otherwise, if the array does not contain even values, you would output an odd number again.
You could use a general and compact Stream
solution as alternative to a custom method:
int maxEven = Arrays.stream(a)
.filter(a -> a % 2 == 0) // Only even values
.max() // OptionalInt
.orElse(-1); // Gets the value or uses -1 if not present
Перейти к содержанию
Максимальный из элементов массива с четными индексами
Просмотров 4.1к. Обновлено 15 октября 2021
В массиве найти максимальный элемент с четным индексом.
Другая формулировка задачи: среди элементов массива с четными индексами, найти тот, который имеет максимальное значение.
В различных языках программирования индексация элементов выполняется по-разному. В одних первый элемент имеет индекс 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 10main() {
printf("%3d", i);
int a[N];
int i, max;
for (i=0; i
}
printf("n");
srand(time(NULL));
for (i=0; i a[i] = rand() % 100;
printf("%3d", a[i]);
}
printf("n");max = 0;
if (a[i] > a[max]) max = i;
for (i=2; i
printf("%d: %dn",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 im = 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
Здравствуйте!
var arr = [];
var func = function(arr) {
for(var i = 0; i < 6; i++) {
var sum = prompt("Введите число");
arr.push(sum);
}
var max = arr[0];
for (var z = 1; z < arr.length; ++z) {
if(max % 2 == 0) {
if(max < arr[z]) {
max = arr[z];
}
}
}
var result = arr + "n" + max;
return result;
}
console.log(func(arr))
Нужно найти максимальное ЧЁТНОЕ число, но что-то не получается… В чем проблема?(
-
Вопрос заданболее трёх лет назад
-
4255 просмотров
var num = 0;
for (var i = 0; i < 6; i++) {
var n = prompt('Введите число');
if ((n > num) && (n % 2 == 0)) {
num = n;
}
}
[1,4,5,6,1000,10,444,131,320,1332].reduce( (result, number) => number % 2 === 0 && number > result ? number : result, 0)
var numbers = [1,4,5,6,8,10,444,131,320,333];
var max = numbers[0];
for (var i = 0; i < numbers.length; i++){
if (numbers[i] % 2 == 0 && numbers[i] >= max) max = numbers[i];
}
Пригласить эксперта
if(max % 2 == 0) {
может надо заменить на
if (arr[z] % 2 == 0)
var arr = [];
var func = function(arr) {
for(var i = 0; i < 6; i++) {
var sum = prompt("Введите число");
arr.push(sum);
}
var evenArr = arr.filter(function(number) {
/* метод .filter применяет эту функцию к каждому элементу массива,
если возвращается false элемент удаляется.*/
return number % 2 === 0;
});
Array.max = function( array ){
// возвращает максимальный элемент массива
return Math.max.apply( Math, array );
};
return Array.max(evenArr);
}
console.log(func(arr));
-
Показать ещё
Загружается…
30 мая 2023, в 00:55
125000 руб./за проект
30 мая 2023, в 00:34
1000 руб./за проект
29 мая 2023, в 23:21
2000 руб./за проект
Минуточку внимания
0 / 0 / 0 Регистрация: 17.02.2021 Сообщений: 29 |
|
1 |
|
Найти наибольшее чётное число в массиве.27.02.2021, 04:46. Показов 3250. Ответов 3
Напишите функцию, которая находит наибольшее число в массиве nums, которое также является четным. Если четного числа нет, верните -1.
0 |
Ovederax 583 / 388 / 207 Регистрация: 30.04.2017 Сообщений: 723 |
||||
27.02.2021, 08:35 |
2 |
|||
Сообщение было отмечено amr-now как решение Решение
1 |
0 / 0 / 0 Регистрация: 17.02.2021 Сообщений: 29 |
|
27.02.2021, 11:05 [ТС] |
3 |
Ovederax, пишет, что nums не объявлен
0 |
amr-now 6483 / 3894 / 2005 Регистрация: 14.06.2018 Сообщений: 6,781 |
||||
27.02.2021, 13:35 |
4 |
|||
Сообщение было отмечено amr-now как решение Решениеeserius, простой алгоритм на цикле с индексом:
Добавлено через 3 минуты
пишет, что nums не объявлен У Ovederax всё нормально объявлено. Скрипт рабочий.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
27.02.2021, 13:35 |
Помогаю со студенческими работами здесь Найти наибольшее четное число последовательности (из паскаля в delphi) Найти наибольшее четное число с наибольшей суммой делителей Подпрограмма: Найти наибольшее четное число среди заданных 4-ых чисел Вводится последовательность из N целых чисел, найти наибольшее четное число в последовательности Если есть нулевые элементы, то найти наибольшее чётное число, как Вводится последовательность из N целых чисел, найти наибольшее четное число в последовательности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
Python задачи
Задайте массив с случайными значениями, далее среди элементов массива с четными индексами, найдите тот элемент, который имеет наибольшее значение. Разбор задачи на языке программирования python.
Алгоритм решения задачи на python
Для поиска максимума только среди четных индексов необходимо при переборе массива в цикле использовать шаг, равный 2. Предположим, что первый элемент с четным индексом и есть максимальный. Присвоим его индекс переменной. В цикле будем сравнивать значение очередного элемента со значением элемента которое записано в нашу переменную. Если текущий элемент больше, то перезапишем его в переменную.
Код для нахождения наибольшего чётного элемента массива
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])
Python задачи
Все задачи на python
Репост статьи
23 декабря 2022 г.
Комментарии могут оставлять только зарегестрированные пользователи!
Комментарии
Ваш комментарий будет первым !