Fiz dois códigos HTML e Javascript no VSCode, na qual uma função que receba um array de números e retorne a soma dos elementos pares e o produto dos elementos ímpares, conforme segue:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Soma e Produto</title>
</head>
<body>
<h1>Caluculadora: Soma números Pares e o Produto de números Ímpares</h1>
<label for="numeros">Digite os números separados por vírgulas</label>
<input type="text" id="numeros" placeholder="Ex: 1,3 ou 2,4"><br><br>
<button onclick="calcular()">Calcular</button>
<div id="resultado"></div>
<div id="erro" style = "color:red;"></div>
<script src="script.js"></script>
</body>
</html>
JavaScript
// Função para calcular a soma dos números pares e o produto dos números ímpares em um array
function calcularSomaProduto(array) {
let somaPares = 0; // Inicializa a variável para armazenar a soma dos números pares
let produtoImpares = 1; // Inicializa a variável para armazenar o produto dos números ímpares (começa com 1, pois é o elemento neutro da multiplicação)
let paresUsados = []; // Array para armazenar os números pares usados no cálculo
let imparesUsados = []; // Array para armazenar os números ímpares usados no cálculo
// Loop para percorrer cada número do array
for (let numero of array) {
if (numero % 2 === 0) { // Verifica se o número é par (resto da divisão por 2 é 0)
somaPares += numero; // Adiciona o número à soma dos pares
paresUsados.push(numero); // Adiciona o número ao array de pares usados
} else { // Se o número não for par (ímpar)
produtoImpares *= numero; // Multiplica o número ao produto dos ímpares
imparesUsados.push(numero); // Adiciona o número ao array de ímpares usados
}
}
// Retorna um objeto com os resultados e os arrays de números usados
return {
somaPares,
produtoImpares,
paresUsados,
imparesUsados
};
}
// Função chamada quando o botão "Calcular" é clicado
function calcular() {
// Obtém o valor do campo de entrada de números
const inputNumeros = document.getElementById("numeros").value;
// Divide a string de entrada em um array de strings, usando a vírgula como separador
const numerosString = inputNumeros.split(",");
// Converte cada string do array para um número
const numeros = numerosString.map(Number);
// Obtém a div de erro para exibir mensagens de erro
const erroDiv = document.getElementById("erro");
// Limpa qualquer mensagem de erro anterior
erroDiv.textContent = "";
// Verifica se há entradas inválidas (não numéricas)
for (let i = 0; i < numeros.length; i++) {
if (isNaN(numeros[i])) { // Se um elemento não for um número
erroDiv.textContent = "Entrada inválida. Digite apenas números separados por vírgula.";
return; // Encerra a função
}
}
// Filtra os números pares e ímpares para verificar se há pelo menos dois de cada tipo
let pares = numeros.filter(num => num % 2 === 0);
let impares = numeros.filter(num => num % 2 !== 0);
// Verifica se há pelo menos dois números pares ou dois números ímpares
if (pares.length < 2 && impares.length < 2) {
erroDiv.textContent = "Digite pelo menos dois números pares ou dois números ímpares.";
return; // Encerra a função
}
// Chama a função calcularSomaProduto() para obter os resultados
const resultado = calcularSomaProduto(numeros);
// Cria a string HTML para exibir os resultados
let resultadoHTML = `<p>Soma dos pares (${resultado.paresUsados.join(", ")}): ${resultado.somaPares}</p>`;
// Verifica se há números ímpares para calcular o produto
if (resultado.imparesUsados.length > 0) {
resultadoHTML += `<p>Produto dos ímpares (${resultado.imparesUsados.join(", ")}): ${resultado.produtoImpares}</p>`;
} else {
resultadoHTML += `<p>Não há números ímpares para calcular o produto.</p>`;
}
// Exibe os resultados na div de resultados
document.getElementById("resultado").innerHTML = resultadoHTML;
// Limpa o campo de entrada para novos cálculos
document.getElementById("numeros").value = "";
}