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

Resolução da atividade

Resolvi impedir a entrada e NaN na quantidade e ao final mostrar quais são os ingredientes:

Caso houver algum erro gostaria de entender qual foi.

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

    function pulaLinha(){

        document.write("<br><br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var ingredientes = [];

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

    while (isNaN(quantidade)){
       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("<br>" + ingrediente);
            contador++;
        }
    }


    mostra ("Serão utililizados " + quantidade + " ingredientes.");
    mostra ("Os ingredientes são:<br>" + ingredientes);

</script>
2 respostas
solução!

Fala Felipe! Beleza!?

Tem um problema no seu código sim: Reparou que ele permite incluir um ingrediente que já foi incluído? Isto porque você colocou o <br> no array:

ingredientes.push("<br>" + ingrediente);

Como o usuário não incluí o <br> junto do ingrediente, ele sempre vai considerar que é diferente... por exemplo:

arroz == <br>arroz (false)

Segue os ajustes que eu fiz:

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

    function pulaLinha(){
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var ingredientes = [];
    // var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
    var quantidade; //dica: Só declare a variável, assim, ela vai ficar com valor indefinido 
                    //e consequentemente, isNaN vai ser true e vai entrar no loop

    while (isNaN(quantidade)){
       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("<br>" + ingrediente);  <=== ERRO!
            ingredientes.push(ingrediente);            
            contador++;
        }
    }

    mostra ("Serão utililizados " + quantidade + " ingredientes.");
    // mostra ("Os ingredientes são:<br>" + ingredientes);
    mostra ("Os ingredientes são:"); //Melhor rodar o loop pra listar os ingredientes
    for (var posicao = 0; posicao < ingredientes.length; posicao++){
        mostra(ingredientes[posicao]);
    }

</script>

Mas fique a vontade para dar sua solução hein!!!

Espero ter ajudado!

Por favor: Não esqueça de marcar o fórum como solucionado, beleza!?

Abraços e bons estudos!!!

Muito obrigado, anotei tudo que passou, funcionou mesmo!