Как найти наибольшее четное число массива

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 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: %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 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

Здравствуйте!

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 как решение

Решение

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function findMaxEvev(nums) {
  const result = nums.reduce((prev, curr) => {
    if(curr % 2 === 0) {
      if(curr > prev || prev === null) {
        return curr
      }
    }
    return prev
  }, null)
  return result === null? -1 : result
}
 
const nums = []
for(let i=0; i<10; ++i) {
  nums.push(Math.trunc(Math.random() * 100 - 50))
}
console.log(nums)
console.log(findMaxEvev(nums))
console.log(findMaxEvev([]))
console.log(findMaxEvev([-1, -2, -4]))



1



0 / 0 / 0

Регистрация: 17.02.2021

Сообщений: 29

27.02.2021, 11:05

 [ТС]

3

Ovederax, пишет, что nums не объявлен



0



amr-now

Эксперт JS

6483 / 3894 / 2005

Регистрация: 14.06.2018

Сообщений: 6,781

27.02.2021, 13:35

4

Лучший ответ Сообщение было отмечено amr-now как решение

Решение

eserius, простой алгоритм на цикле с индексом:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function maxEven(nums) {
    let max = - 1;
    for (let i = 0; i < nums.length; i++) {
        let e = nums[i]; // Текущий элемент массива
        // Если четный и (если больше максимального или максимального четного не было)
        if (!(e % 2) && (e > max || max === -1))
            max = e;
    }
    return max;
}
 
console.log(maxEven([-1, -2, -4]));

Добавлено через 3 минуты

Цитата
Сообщение от eserius
Посмотреть сообщение

пишет, что nums не объявлен

У Ovederax всё нормально объявлено. Скрипт рабочий.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

27.02.2021, 13:35

Помогаю со студенческими работами здесь

Найти наибольшее четное число последовательности (из паскаля в delphi)
program num;
Var a:array of integer;
i, k, max, n :integer;
begin
writeln(‘Введите…

Найти наибольшее четное число с наибольшей суммой делителей
Вот мой код.Я разбил на четные числа и нашел сумму делителей каждого четного числа,только как их…

Подпрограмма: Найти наибольшее четное число среди заданных 4-ых чисел
Создать функцию, в которую передается четыре числа введенных пользователем. Найдите наибольшее…

Вводится последовательность из N целых чисел, найти наибольшее четное число в последовательности
Вводится последовательность из N целых чисел, найти наибольшее четное число в последовательности в…

Если есть нулевые элементы, то найти наибольшее чётное число, как
это правильно реализовать для динамического вектора в stringgrid
и если кто знает, подскажите как…

Вводится последовательность из N целых чисел, найти наибольшее четное число в последовательности
Необходимо сделать без массивов, и без использования max и min- мы их еще не изучали

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4

Python задача. Найдите наибольший из элементов массива с четными индексами

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 г.

Комментарии могут оставлять только зарегестрированные пользователи!



Комментарии

Ваш комментарий будет первым !

Напиши программу, которая принимает натуральное число n, а затем n чисел от 1 до 100. выведи максимальное из них, которое заканчивается на 1. если такого числа нет, напечатай «нет».

Pascal задача.Даны натуральные числа n, m. Получите сумму m последних цифр числа n.

Понравилась статья? Поделить с друзьями:
  • Как в убунте исправить ошибки
  • Как найти совместный закон распределения
  • Хрипит микрофон как исправить
  • Как найти скорость шара на нити
  • Как найти луч у треугольника