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

A repetição ainda aparece

<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 achou = false
        var ingrediente = prompt("Informe o ingrediente " + contador);    

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

             if(ingredientes[posicao] == ingrediente){

                 achou = false;
                 break;
             }
         }

         if(achou == false){

             ingredientes.push(ingrediente);
             contador++
         }

    }

    console.log(ingredientes);
</script>

ainda não identifiquei o que está faltando, alguém consegue me ajudar?

2 respostas

Na linha 23, dentro do seu if, você deve mudar o achou para

achou = true;

Com isso o if seguinte, que realmente adiciona os números ao array, não será executado.

solução!

Bom dia, Felipe. O Adriano está certo no comentário dele. Ali antes do break o achou tem de ser true (achou = true). E eu incrementei um alert("ESTE INGREDIENTE JÁ FOI ADICIONADO À LISTA!!") entre o break e o achou = true para indicar que o ingrediente já existe na lista. Por que? Pelo fato de que se digitarmos um ingrediente repetido o prompt vai ficar repetindo "Adicione o ingrediente" numero tal até adicionarmos um ingrediente diferente e talvez o usuário não entenda a razão da repetição do prompt, como você pode ver no meu código abaixo. No meu código eu troquei a palavra achou por ENCONTROU.

<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;
                alert("ESTE INGREDIENTE JÁ FOI ADICIONADO À LISTA!!")
                break;
            }

        }

        if(encontrou == false) {
            ingredientes.push(ingrediente);
            contador++;
        }

    }

    console.log(ingredientes);
</script>