Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Desafio Hora de Praticar 11 - Soma/Produto

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 = "";
}
2 respostas
solução!

Olá, Paulo! Coisa muito útil, tudo funciona bem! Pode ser usada como modelo para várias calculadoras. Parabéns!

Muito obrigado por sua atenção Karina , sinto-me recompensado pelas horas de pesquisa e estudo.