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

Tentei fazer com 2 for's em vez de While, o que eu errei?

var ingredientes = [];

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

    for (var contador = 1; contador <= quantidade; contador++){

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

        var jaTem = false;

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

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

        };

        if (jaTem == false) {
             ingredientes.push(ingrediente)
        };

    }

    document.write(ingredientes);
2 respostas

Desculpe, respondi no post errado. :)

solução!

Oi Gabriel, meu aluno. Boa tentativa com o for, mas tem um pequeno detalhe que passou desapercebido por você. Se o ingrediente já existe, temos que perguntar novamente. Tenho certeza que você sabe que devemos fazer isso, mas em seu código, se o ingrediente já existe, não podemos incrementar o contador do for, se fizermos isso, estaremos considerando como se aquele ingrediente valesse. Daí, o problema do seu código. Se você digitar A e depois A, ele exibe apenas um ingrediente e não pergunta novamente. É por isso que um while é interessante, porque nele podemos hora incrementar a variável ou não, no caso, a variável contador para saber quantos ingredientes já cadastramos.

Veja o mesmo código com o while, aliás, um bom exemplo do uso do while:

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

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

            if( ingredientes[posicao] == ingrediente) {

                existe = true;
                break;
            }
        }

        if( existe == false) {

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

    console.log(ingredientes);

Veja que o while esta ai para controlar quantos ingredientes você já ACEITOU do teclado. Se você digitar um que já existe, ele não incrementará o contador.

Veja que esse é um exemplo que o for não é muito indicado, porque ele já incrementa automaticamente o seu contador no final do loop. Com While, temos mais controle sobre o que fazer com o incremento. Sucesso e bom estudo!