Задать вопрос
alaskafx
@alaskafx
Не .do Frontend

В чем моя ошибка stepik?

Напишите программу, которая находит произведение элементов массива (состоящего из 10 чисел), кратных 3 или оканчивающихся на 5, если таких элементов нет, сообщите пользователю об этом: "Элементов нет".

Моё решение:

let sum = [];


function hw(arr){
    
for(let i = 0; i < arr.length; i++){
    if(arr[i] * arr[i+1] == 720){
    sum.push(arr[i] * arr[i+1])
    }
}

 sum[0] ? console.log(720) : console.log("Элементов нет"); // тут даже пытался сделать лог sum[0]
};



hw([46,47,10,10,20,47,15,48,2,16])


Что я сделал не так?
  • Вопрос задан
  • 244 просмотра
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
произведение элементов массива
let p = 1;
// в цикле:
p *= arr[i];


кратных 3
n % 3 === 0

оканчивающихся на 5
n % 10 === 5

если таких элементов нет
в общем случае делается введением флага:
let hasElements = false;

if (/* ... */) {
  hasElements = true;
}
Но конкретно в этом случае, так как 1 гарантированно не попадает под условия, а все остальные числа изменят произведение, можно проще p !== 1

Вам осталось дело за малым, объединить эти кусочки знаний в единый алгоритм
Ответ написан
Комментировать
QuayS1de
@QuayS1de
let sum = [];

function hw(arr) {
    for (let i = 0; i < arr.length; i++) {
        let value = arr[i].toString();
        ((arr[i] % 3 == 0) || (value.substr(value.length-1, value.length) == 5)) ? sum.push(arr[i]) : '';
    }
    sum.length == 0 ? console.log('Элементов нет') : result = sum.reduce((prev, val)=>{return console.log(prev * val);});
};

hw([46, 47, 10, 10, 20, 47, 15, 48, 2, 16])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы