1
resposta

Por que meu programa deixa repetir o ingrediente?

<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) {

        for (var posicao=0; posicao<quantidade; posicao++) {    

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

            if (ingrediente == ingredientes[posicao]) {

                achou = true;
                break;                
            }    

            if (achou == false) {

                ingredientes.push(ingrediente);
                contador++;
            }
        }
    }

    function pulaLinha(){

        document.write ("<br>");

    }

    function mostra(texto){

        document.write (texto);
        pulaLinha();

    }

    numeroIngrediente = 1;
    numero2 = 0;
    while (numeroIngrediente <= quantidade) {

        mostra (" o ingrediente numero " + numeroIngrediente + " é " + ingredientes[numero2]);
        numeroIngrediente++;
        numero2++
    }

</script>
1 resposta

Fala, Wesley! Tudo bem contigo?

Vamos lá!

Primeiro nós temos que retirar a variável ingrediente e a variável achou de dentro do for para que ele não "zere" a cada looping, pois ela dentro do forvai somente considerar o primeiro e no próximo looping vai "esquecer" o primeiro, será um novo e assim por diante

while (contador <= quantidade) {
    var ingrediente = prompt("Informe o ingrediente " + contador);
    var achou = false;

Agora, primeiro vamos nos referir a array e a posição dentro da array para depois comparar com a variável ingrediente. Você só trocou os lados ;-)

for (var posicao = 0; posicao < quantidade; posicao++) {

      if (ingredientes[posicao] == ingrediente) {

        achou = true;
        break;
      }
    }

E agora retiramos o próximo if de dentro do for pelo mesmo motivo que tiramos as variáveis ingrediente e achou

    if (achou == false) {

      ingredientes.push(ingrediente);
      contador++;

    }

Feito essas alterações podemos rodar!

Refaça e analise essas partes, Wesley, para ir fixando ;-)

Espero ter ajudado, amigão!

Bons estudos e vamos em frente!!!