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

O Programa fica perguntando sempre o primeiro 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) {

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

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

                           if(ingredientes[posicao] == ingrediente){
                                achou = true;
                                break;
                           }

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

    console.log(ingredientes);
</script>
4 respostas
solução!

Olá Felipe,

É nessário retirar o seguinte if de dentro do for:

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

Porque essa validação deve ser feita somente quando o ingrediente digitado tiver sido verificado em todas as posições do array ingredientes, a fim de saber de esse ingrediente já foi inserido antes.

O programa sempre exibe o valor do ingrediente 1 porque o contador nunca é incrementado por estar dentro do for, uma vez que na primeira execução ingredientes.length tem o valor de 0 e por contado disso o for não é executado e consequentemente o contador não é incrementado. Logo, o contador terá sempre o valor de 1

Felipe,

O código completo ficará da seguinte forma:

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

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

      if (ingredientes[posicao] == ingrediente) {
        achou = true;
        break;
      }
    }

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

  console.log(ingredientes);
</script>

Muito Obrigado Guilherme. Entendi o meu erro

Muito bom Fellipe...

Você poderia por gentileza marcar o tópico como solucionado?