3
respostas

Código pede apenas pelo ingrediente 1

Pessoal podem me ajudar a ver o que tem errado no código, por favor? Ele fica pedindo apenas pelo ingrediente 1 e não segue adiante.`

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

    var ingredientes = [];


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

    var contador = 1;     

    function sorteia() {
        return Math.round(Math.random() * 10);
    }

    while( contador <= quantidade) {

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

        var ingrediente = sorteia();
        var achou = false;

        if(ingrediente !== 0) {
            for(var posicao = 0; posicao < ingredientes.length; posicao++);
        }

        if (ingredientes[posicao] == ingrediente) {

             alert("Ingrediente repetido! Tente outro.");
             achou = true;
             break;
        }
        if (achou = false) {

        ingredientes.push(ingrediente);

        contador++;
      }
}

    console.log(ingredientes);
</script>

`

3 respostas

O loop de while nao e o melhor tipo pra essa sua abordagem, acabei removendo algumas funcioes nao necessarias, e usei metodos mais modernos e eficientes para fazer as checkagens, qualquer duvida so dar um google, o codigo ta funcionando e devolver certinho a array com os produtos sem repetir :)

 <meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

    var ingredientes = [];

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

    for (let i = 1; i < quantidade+1; i++) {

        let ingrediente = prompt("Informe o ingrediente #" + i + " ?");

        if(!ingredientes.includes(ingrediente)) {
            ingredientes.push(ingrediente);
            console.log(ingrediente);
            continue;
        } else {
            alert("Ingrediente repetido! Tente outro.");
            i--;
        }

    }
    console.log(ingredientes);

</script>

Acabei de verificar o exercio e vi que minha resposta fugiu um pouco da atividade proposta pelo professor, segue abaixo uma solucao mais simploria, que se encaixa melhor com a proposta de didatica do exercicio

<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);
      //o motodo 'includes()' verificar se o argumento passado contem na quela array e devolver
           // 'true' ou 'false', ai so usei o operador de inverter('!') para ele so entrar no 'if'
           // caso o valor nao seja encontrado na array
        if(!ingredientes.includes(ingrediente)) {
            ingredientes.push(ingrediente);
        }
        contador++;
    }

    console.log(ingredientes);
</script>

Boa tarde, Roberto Lineu Sant'Anna Hein e muito obrigado por me responder. Eu testei esse último código mas quando pede os ingredientes e eu coloco o ingrediente repetido ainda consigo adicionar, o exercício pede para adicionar os ingredientes mas que o código avise quando o mesmo está sendo repetido, o que não está acontecendo. Vc saberia me dizer como fazer, por favor? Essa parte eu realmente não entendi. Obrigado mais uma vez!Abs