Open akdkito opened 9 months ago
Hola Midu, La verdad que, antes de preguntar, quería agradecerte por los videos y los cursos, tenés una manera espectacular de explicar y super facil de entender. Ahora viene la duda.... Probé este codigo en consola y me devuelve resultado pero en el curso me da error
function sumarPares(numeros) { let suma = 0 // tu código aquí for (let i = 1; i <= numeros; i++) { if(i % 2 == 0) { suma += i } } return suma }
Gracias por todo
Buenas, espero serte de ayuda. En primer lugar decirte que, aunque no vas mal encaminad@, es necesario que conozcas lo que estás haciendo:
function sumarPares(numeros) {
let suma = 0
for (let i = 1; i <= numeros; i++) { // Problema 1
if (i % 2 == 0) { // Problema 2
suma += i // Problema 3
}
}
return suma
}
Problema 1:
Problema 2:
Problema 3:
Mi primera recomendación es que intentes 'debuggear', en otras palabras, verificar qué estás haciendo en cada paso para entender por qué te está dando mal el resultado, prueba este código, por ejemplo:
function sumarPares(numeros) {
let suma = 0;
console.log("Números: ", numeros);
for (let i = 1; i <= numeros; i++) {
// Ten en cuenta que i seguirá creciendo hasta llegar al valor de números
console.log("Iteración", i, ", valor de numeros ", numeros);
if (i % 2 == 0) {
console.log("Es el ínidice ", i, "par? ", i % 2 == 0);
suma += i;
console.log("Suma actual:", suma);
}
}
return suma;
}
Si te fijas, con ese código, sólo se te va a imprimir el primer console.log... esto se debe a que no puedes comparar un array a un número. Al hacer el for (let i = 1; i <= numeros; i++)
le estás diciendo que mientras let i
sea menor o igual que el array de numeros, prosiga con el for. Por tanto, no entrará en el for.
Para solucionarlo, tendrás que modificar el for de tal forma que let i
sea menor o igual que la LONGITUD del array de numeros, tal que:
function sumarPares(numeros) {
let suma = 0;
console.log("Números: ", numeros);
// Se resta numeros.length - 1 porque los índices de un array comienzan desde 0
// Para asegurar que el bucle itere sobre la longitud esperada de numeros, se resta 1
// Si no se restara, el bucle iteraría hasta un índice que no existe en el array, causando error
for (let i = 1; i <= numeros.length - 1; i++) {
console.log("Iteración", i, ", longitud de array: ", numeros.length);
if (i % 2 == 0) {
console.log("Es el ínidice ", i, "par? ", i % 2 == 0);
suma += i;
console.log("Suma actual:", suma);
}
}
return suma;
}
Bien, ahora que sabes iterar sobre el array debes entender cómo iterar sobre el valor de cada índice del array. Volvamos a recordar que dado un array [6, 7, 2, 4], el índice 0 contendrá el valor de 6, el índiice 1 contendrá el valor de 7, etc. Por tanto, para poder comparar si el número en la posición indicada es par, deberás
function sumarPares(numeros) {
let suma = 0;
console.log("Números: ", numeros);
for (let i = 1; i <= numeros.length; i++) {
console.log("Iteración", i, ", longitud de array: ", numeros.length);
const value = numeros[i];
if (value % 2 === 0) {
console.log("Es el valor", value, " del índice ", i, "par? ", value % 2 == 0);
suma += i;
console.log("Suma actual:", suma);
}
}
return suma;
}
Ahora que sabes iterar sobre un array y acceder al valor de cada índice, te dejaré que resuelvas el resto...
No olvides que si te trabas en algún punto, un console.log bien puesto ayuda a solucionar muchos problemas ;) ¡Mucha suerte!
Hola Midu, La verdad que, antes de preguntar, quería agradecerte por los videos y los cursos, tenés una manera espectacular de explicar y super facil de entender. Ahora viene la duda.... Probé este codigo en consola y me devuelve resultado pero en el curso me da error
function sumarPares(numeros) { let suma = 0 // tu código aquí for (let i = 1; i <= numeros; i++) { if(i % 2 == 0) { suma += i } } return suma }
Gracias por todo