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

Duda en el ejercicio recetas

Ya pude realizar el ejercicio de las recetas pero en mi primer intento no entiendo muy bien porque no funciono mi código, alguien podría explicarme por favor

<meta charset="UTF-8">

<h1>Recetas de Armando</h1>

<script>

    var ingredientes = [];
    var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?"));
    var contador = 1;

    while( contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente " + contador);
        if (ingredientes[contador] == ingrediente) {
            alert("Usted ya agrego ese ingrediente, por favor ingrese otro")  
        }else{
            ingredientes.push(ingrediente);
            contador++;
        }

    }

    console.log(ingredientes);

</script>
3 respuestas

Saludos compañero, el código produce un error ya que el contador que tienes lo inicias en 1 en la linea 9 contador = 1 por tanto, cuando usas el condicional if (ingredientes[contador] == ingrediente) la variable de ingredientes[contador] se va a saltar el elemento que está en la posición 0 del arreglo ingredientes esto como primer error.

Como segundo error está ese ciclo while ya que aun cuando iguales el contador a 0 contador=0 va a seguir generando un error porque el primer elemento que ingrese el usuario siempre va a entrar en el arreglo ingredientes por tanto el contador va aumentar en 1 (el contador va a pasar de contador = 0 a contador = 1, así que, cuando ingreses el segundo ingrediente y estés en la condición if (ingredientes[contador] == ingrediente) los valores que toma esta condición serán: (ingredientes[1] == ingrediente) y tienes el mismo problema de antes, ingredientes[1] debe ser ingredientes[0] ya que el primer ingrediente que agregas se pone en la posición [0] del arreglo ingredientes, lo que acá hace tu código es que compara la posición[1] del arreglo de ingredientes con tu segundo ingrediente, y esta posición va a estar vacía ya que el primer ingrediente lo agregamos a la posición [0] del arreglo ingredientes. resultado, el if siempre va a ser falso porque vas a estar comparando un valor indefinido (porque en esa posición del arreglo aún no existe ningún elemento) con un "string" que contiene tu segundo, tercer, cuarto etc... "ingrediente". Los ingredientes se van a agregar así estén repetidos ya que la condición no barre adecuadamente el arreglo.

para solucionar esto se crea un ciclo for dentro del ciclo while:

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

de esta forma, el ciclo for me va a barrer todo el arreglo comparando si el ingrediente está dentro del arreglo, mientras que el ciclo while se usa para pedir al usuario que ingrese ingredientes según la cantidad de ingredientes que el usuario ingresó en la variable cantidad.

Me disculpo por la extensa explicación pero no supe cómo más explicarlo jajaja, como consejo puedes buscar un programa que ejecuta paso paso cada linea de código y así entiendes mejor lo que está ejecutando tu código, de esta forma es más visual identificar el error

Muchas gracias por tomarte el tiempo de explicarme, ya me quede un poco más claro que estaba haciendo, los arreglos desde que los conozco me confunden mucho, igual gracias saludos :)

Con los arreglos hay que tener presente que el primer elemento corresponde a la posición[0], el segundo elemento estará la posición[1] etc..