Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ele ta em lop infinito

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<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 encontrou=false;

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


            if(ingredientes[posicao]==ingrediente){

                encontrou=true;
                break;
            }

            if(encontrou==false){

                 ingredientes.push(ingrediente);
                 contador++;

            }

        }


    }

    console.log(ingredientes);
</script>
2 respostas

Oi Stella, tudo bem ?

Acredito que tenha algum problema nessa lógica.

Me explica qual é o problema e ai discutimos a solução, pode ser ?

solução!

Oi Stella a logica em si parece estar perto de estar correta. O unico problema foi o seguinte: Quando voce verifica se o ingrediente digitado já foi digitado anteriormente com o loop

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


            if(ingredientes[posicao]==ingrediente){

                encontrou=true;
                break;
            }

Você colocou tambem a logica de adicionar esse produto:

if(encontrou==false){

                 ingredientes.push(ingrediente);
                 contador++;

            }

O que tens que fazer é verificar todos os produtos com o loop (FOR) e depois de sair do loop verificar se foi encontrado ou não, ou seja, precisa tirar essa verificação de dentro do loop como segue abaixo:

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<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 encontrou = false;

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


            if (ingredientes[posicao] == ingrediente) {

                encontrou = true;
                break;
            }
        }
        if (encontrou == false) {

            ingredientes.push(ingrediente);
            contador++;

        }
    }

    console.log(ingredientes);

</script>

Espero ter ajudado,

Dica: Coloque um resposta ao seu usuario dizendo que o item que ele adiciona já foi adicionado anteriormente.