Help with sum

1

I want to write an algorithm, in JAVASCRIPT, that reads an N numbers and adds only the even numbers

var n1, n2, n3, soma;
n1 = parseInt(prompt("Digite o 1º Número :"));
n2 = parseInt(prompt("Digite o 2º Número :"));
n3 = parseInt(prompt("Digite o 1º Número :"));

document.write("Seus Números Digitados foram: " + n1 + " , " + n2 + " , " + n3 + "<br>");


if ((n1 % 2 && n2 % 2) == 0) {
  if ((n3 % 2) == 0) {
    soma = n1 + n2 + n3;
    document.write("Resultado é: " + soma);
  }
} else if ((n2 % 2 && n3 % 2) == 0) {
  soma = n2 + n3;
  document.write("Resultado é: " + soma);
} else if ((n3 % 2) == 0) {
  soma = n3;
  document.write("Resultado é: " + soma);
} else {
  document.write("ERRO");
}
}
    
asked by anonymous 14.09.2017 / 22:35

2 answers

1

You can do this:

// Inicialmente o conjunto de números está vazio.
var numeros = [];

// Lê o n.
var n = parseInt(prompt("Quantos números você quer digitar?"));

// Lê cada um dos n números.
for (var i = 0; i < n; i++) {
    var digitado = parseInt(prompt("Digite o " + (i + 1) + "º Número:"));
    numeros.push(digitado);
}

// Escreve os números digitados na tela.
document.write("Seus números digitados foram ");
for (var i = 0; i < n; i++) {
    // Coloca uma vírgula ou um "e" para separar o próximo número do anterior.
    if (i !== 0) {
        if (i === n - 1) {
            document.write(" e ");
        } else {
            document.write(", ");
        }
    }

    // Escreve o número.
    document.write(numeros[i]);
}
document.write("<br>");

// Soma apenas os números pares.
var soma = 0;
for (var i = 0; i < n; i++) {
    if (numeros[i] % 2 === 0) soma += numeros[i];
}

// Mostra o resultado.
document.write("O resultado é: " + soma + ".");
    
14.09.2017 / 22:46
2

You can do this with .reduce like this:

function somador( /*arguments*/ ) {
  var numeros = [].slice.call(arguments);
  return numeros.reduce(function(soma, nr) {
    return nr % 2 == 0 ? soma + nr : soma;
  }, 0);
}

console.log(somador(2,3,4,5,6)); // 12

Using % == 0 you know if it is an even number and you decide whether to include the number in the sum or not.

With modern JavaScript it would look even shorter:

function somador( /*arguments*/ ) {
  return [...arguments].reduce(
    (soma, nr) => nr % 2 == 0 ? soma + nr : soma, 0
  );
}

console.log(somador(2, 3, 4, 5, 6)); // 12
    
14.09.2017 / 22:42