2
respostas

Loop Infinito

Boa tarde, pessoal.

Tentei fazer o exercícío de uma maneira um pouco diferente do gabarito. Ao invés de utilizar duas vezes a condição IF, eu tentei fazer da seguinte maneira.

<meta charset="UTF-8">


<script>

    var ingredientes = [];

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    var contador = 1;

    while( contador <= quantidade) {

        var ingrediente = prompt("Informe o ingrediente " + contador);

        var existe = false;

        for (posicao = 0; posicao < ingredientes.length; posicao ++){

            if (ingrediente == ingredientes[posicao]) {

                existe = true;
                alert("Ingrediente já incluído");  
                break; 

            } else{

                ingredientes.push(ingrediente);

                contador++;               
            }
        }


    }

    console.log(ingredientes);
</script>

O resultado é: O programa fico em um loop infinito perguntando qual é o ingrediente 1.

2 respostas

Olá Felipe, tudo bem?

Se eu entendi corretamente, você que o usuário faça uma lista, de compras, por exemplo. Onde ele informa a quantidade de itens na lista e depois vai inserindo os items, onde informa se o item inserido já existe ou não.

Segue a lógica que eu implementei.

Onde o loop while confere a informação se existe, que no caso parte do valor false, então, o usuário vai inserido item por item.

A condicional usa o método indexOf do array para conferir se o item inserido existe ou não e depois confere se a quantidade desejada é igual a dimensão da lista de ingredientes.

<meta charset="UTF-8">

<script>
  var ingredientes = [];

  var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

  var contador = 0;

  let existe = false;

  while (!existe) {

    var ingrediente = prompt("Informe o ingrediente");

    if (ingredientes.indexOf(ingrediente) === -1) {
      ingredientes.push(ingrediente);
    }

    if (quantidade === ingredientes.length) {
      existe = true;
    }
  }

  console.log(ingredientes);
</script>

Espero ter ajudado, em caso de dúvida, estou por aqui.

Olá Anderson. Tudo bem ?

Desculpa a demora.

Deu certo aqui, valeu pela força!!