Дан массив из 10 целых чисел заполненный случайными числами из интервала...

0 голосов
62 просмотров

Дан массив из 10 целых чисел заполненный случайными числами из интервала [-15;15].Определить является ли произведение элементов массива имеющих нечетные порядковые номера четным числом.


Информатика (28 баллов) | 62 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Любое произведение чисел будет четным, если оно содержит хотя бы оин четный сомножитель, поэтому задача сводится к определению того, есть ли в массиве хоть один четный элемент с нечетным порядковым номером.
Почему просто не попытаться перемножить эти элементы? Например потому, что максимальное целое значение в компьютерной математике ограничено количеством байт, отводимых для представления данных такого типа и редко превышает 2³². А представление с плавающей точкой - приближенное и проверять четность для подобных чисел часто оказывается бессмысленным.

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
  var a:=ArrRandom(10,-15,15); a.Println;
  if a.Where((x,i)->i.IsEven).Any(x->x.IsEven) then
    Writeln('Четное')
  else Writeln('Нечетное')
end.

Тестовое решение
13 3 5 4 15 7 -15 -4 7 12
Нечетное

Пояснения.
1. var a:=ArrRandom(10,-15,15); - описывается динамический массив "а", который создается и заполняется данными.
2. a.Println; - вывод элементов массива.
3. a.Where((x,i)->i.IsEven) выделяет из массива "а" элементы, у которых индекс четный (массив "а" - динамический и его элементы индексируются от нуля, поэтому элементы с нечетным порядковым номером имеют четные индексы).
Полученная последовательность элементов посредством Any(x->x.IsEven) проверяется на наличие хотя бы одного элемента с четным значением. Проверка возвращает логическое значение, на основе которого формируется вывод.

(142k баллов)
0 голосов

//PascalABC.NET 3.1
begin
  Writeln('Массив: ');
  var a := ArrRandomInteger(10, -15, 15); a.Println;
  writeln('Произведение элементов массива на нечетных позициях ', a.Where((x, i) -> x mod 2 + i mod 2 = 0).Any? 'четное' : 'нечетное');
end.

(13.3k баллов)