Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
7
respuestas

Por que no funciona mi codigo y no sale del primer loop del while ?

<meta charset="UTF-8">

<h1>Recetas de Armando</h1>

<script>

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

    while( contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente " + contador);

        for(let posicion = 0; posicion < listaIngredientes.length; posicion++){
            if(ingrediente =! listaIngredientes[posicion]){
                listaIngredientes.push(ingrediente);
                contador++;
                break

            } else {
                alert("Ya ingresaste el ingrediente " + ingrediente);


            }    
        }
    }
7 respuestas

Aún no soy conocedor pero, creo algunos errores de sintaxis.

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

    while (contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente" + contador);

        for (let posicion = 0; posicion < listaIngredientes.length; posicion++) {
            if(ingrediente != listaIngredientes[posicion]) {
                listaIngredientes.push(ingrediente);
                contador++;
                break} else {
                alert("Ya ingresaste el ingrediente " + ingrediente);
            }
           }
          }

Ojalá te sirva :D

sigue igual no hay cambios .. :/

Faltaba la condición para salir del bucle :D (revisando el ejercicio que había hecho yo antes)

<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(
      "Escriba el ingrediente " + contador + " por favor."
    );

    var encontrado = false;

    //------------------------------------------

    for (i = 0; i < ingredientes.length; i++) {
      if (ingrediente == ingredientes[i]) {
        encontrado = true;
        break;
      }
    }
    if (encontrado == false) {
      ingredientes.push(ingrediente);
      contador++;
    }
  }

  document.write(ingredientes);
  //-------------------------------------------
</script>

Entiendo la solucion que brinda la plataforma lo que no entiendo es por que no ingresa en el "for" y vuelve a ejecutar "ingresar ingrediente 1"

for(let posicion = 0; posicion < listaIngredientes.length; posicion++){
            if(ingrediente =! listaIngredientes[posicion]){
                listaIngredientes.push(ingrediente);
                contador++;
                break

            } else {
                alert("Ya ingresaste el ingrediente " + ingrediente);


            }    
        }

en teoria no deberia entrar en el if y volver a cargar el bucle while ? ahora si pongo uno repetido en la segunda vuelta como es igual deberia pasar al else ? algún concepto me estoy comiendo

solución!

Hola antonio. Lo que pasaste son dos codigos diferentes. En el primero que no te funciona resulta ser que estas declarando el valor de posicion como 0 (CERO) dentro del for. y luego en la condicion estas diciendo que si posicion (QUE VALE CERO) es menor que (CERO) pues listaIngredientes esta vacia por el momento, es decir que listaIngredientes.length es (CERO), entonces : 0<0 es falso y directamente cierra el ciclo for y concluye ahi tu programa.

en cambio compara con el segundo codigo y veras la diferencia..... me diras que ocurre lo mismo pues siii, pero al tener la variable encontrado declarada como false se ejecutara el if ya que la condicion se cumple y se carga el primer ingrediente....

Espero haber sido claro y ayudarte en tu duda. Si es asi marca la respuesta como solucionado. GRACIAS Y SALUDOS:

A seguir programando!!!!

Lo que comenta Cristian es correcto :D

gracias a todos por el tiempo, SOLUCIONADO!!