Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] [Duda] Duda acerca de los ingredientes repetidos

No logro entender muy bien el código que se encuentra abajo. De como puede identificar un ingrediente repetido. Alguien me podría explicar de una forma comprensible? gracias

while(contador <= cantidad) { var ingrediente = prompt("Informe el ingrediente " + contador); var existe = false; for(var posicion = 0; posicion < ingredientes.length; posicion++) { if(ingredientes[posicion] == ingrediente){ existe = true; alert("repetido " + ingrediente); break; } } if(existe == false) { ingredientes.push(ingrediente); contador++; }

2 respuestas

Hola. Me pasa lo mismo que a Frank. No entiendo la lógica de cómo en este caso el ciclo "for" permite identificar que el ingrediente no se haya repetido. De acuerdo con la lectura que yo hago, con el código que comparte Frank (que es el mismo que trae el curso en el aula 5 del curso "Lógica de programación: conceptos primordiales"), según como yo lo veo, con las sentencias que hay dentro del ciclo "for" lo que se va a comparar es que el ingrediente que se está ingresando en la iteración sea igual a él mismo. ¿Por qué lo veo así? Porque creo que ingredientes[posicion] trata de hacer referencia al ingrediente que el usuario acabó de ingresar y que unas líneas más adelante en el código se guardaría dentro del array con la sentencia ingredientes.push(ingrediente);. Sin embargo, por lo que yo entiendo, eso no sucederá, pues en el ciclo "for" se está indicando que si esos dos valores son iguales (es decir, ingredientes[posicion] y el ingrediente que acaba de ingresar el usuario son iguales), entonces la variable "existe" pasa a ser verdadera y se rompe el ciclo.

Si, quizás, estoy equivocado e ingredientes[posicion] hace referencia al valor ingresado en el array en la iteración anterior, aun así creo que el código no permite impedir que se repita algún número, pues el programa compararía solo el valor ingresado en una iteración con el valor ingresado en la iteración anterior, no con todo el contenido del array.

Agradecería mucho si nos dieran una explicación más extensiva de este asunto.

Muchas gracias de antemano.

Hola, espero poder ayudarte contandote como lo voy entendiendo.

Yo entiendo que dentro de "for" define tres situaciones para la iteración, primero la variable, la condición y luego el aumento de esta variable, en este caso "posicion". Lo que va hacer for es la iteración de "if"; donde va a buscar en todas las posiciones un ingrediente igual, y hacer verdadera la variable verdadera para lanzar la alerta y rompe el bucle con "break", si ya busco todo y sigue siendo falsa la variable existe, ingresa la variable digitada al "array" ingredientes.

Espero haberte ayudado, en caso contrario, estoy atento a tus comentarios.