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

Ingredientes repetidos - código funcionou, porém queria uma informação.

Fui um pouco além e queria que aparecesse a lista de ingredientes com suas respectivas posições. Demorei bastante pra chegar nessa solução (tanto o que era pedido quanto dessa extra que eu queis fazer) e funcionou com o WHILE.

O que eu queria saber é porque o FOR (que deixei como comentário ali no fim do código) não funcionou.

Enquanto eu estava usando o For, para escrever me menos linhas, não exibia a lista na tela com as posições. Quando eu usei o while apareceu o texto e na sequencia certa. Com o FOR não aparecia nada. Alguém saberia dizer o motivo?

ingredientes_sem_repeticao_listados

3 respostas

Olá, Vamberto. Tudo bem?

Primeiramente, desculpas pela demora em dar um retorno.

Peço que, por gentileza, me envie o código por aqui, para que eu possa te auxiliar melhor. Assim, eu poderei copiar e colar exatamente o seu código para testá-lo.

Para inserir seu código pelo fórum, basta clicar no botão inserir código, como é mostrado no exemplo abaixo:

Imagem do print da caixa de texto do fórum. Nela temos um menu superior com treze opções. E nele temos selecionado de vermelho o botão de inserir código, que corresponde ao sétimo botão. Abaixo temos um exemplo de uso de código em linha e em bloco.

Fico no aguardo. Abraços!

Bom dia Gabrielle, agradeço o retorno, segue o código abaixo.

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

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

    var contador = 1;
    var ingredientes = [];

    while(contador <= quantidade) {
        var ingrediente = prompt("Informe o ingrediente " + contador);
        var achou = false;
        for (numero = 0; numero <= ingredientes.length; numero++) {
            if (ingrediente == ingredientes[numero]) {
                achou = true;
                window.alert("Esse ingrediente já existe na lista. Informe outro.");
                break
        }                 
    }
            if (achou == false) {
                ingredientes.push(ingrediente);
                   contador++;
        }
}

    console.log(ingredientes);
//    document.write(ingredientes);
//    document.write("<br><br>")

// for (var posicao1 = quantidade; posicao1 > 0; posicao1--) {
//    posicao2 = quantidade - posicao1;
//    var item = ingredientes[posicao2];
//    document.write("Ingrediente " + (posicao2 + 1) + " - " + item + "; <br>");;
// } 

var posicao1 = quantidade;
while (posicao1 > 0) {
    posicao2 = quantidade - posicao1;
    var item = ingredientes[posicao2];
    document.write("Ingrediente " + (posicao2 + 1) + " - " + item + "; <br>");
    posicao1--;
}
</script>
solução!

Olá, Vamberto.

Rodei o código aqui e o laço for funcionou corretamente. Segue abaixo um print do meu teste:

Print da execução de um código em Javascript. Ao lado direito há uma janela do Visual Studio Code com um código que recebe uma lista de ingredientes e adiciona em uma lista, para depois printar na tela os ingredientes. Do lado esquerdo há uma tela do navegador que mostra o resultado final da execução do código, exibindo o título 'Receitas do Yan' e a lista de ingredientes informadas pelo usuário, sendo eles: 'uva, pera, morango'.

Segue também o código para que você possa conferir no seu computador:

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

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

    var contador = 1;
    var ingredientes = [];

    while(contador <= quantidade) {
        var ingrediente = prompt("Informe o ingrediente " + contador);
        var achou = false;
        for (numero = 0; numero <= ingredientes.length; numero++) {
            if (ingrediente == ingredientes[numero]) {
                achou = true;
                window.alert("Esse ingrediente já existe na lista. Informe outro.");
                break
        }                 
    }
            if (achou == false) {
                ingredientes.push(ingrediente);
                   contador++;
        }
}

    console.log(ingredientes);
    document.write(ingredientes);
    document.write("<br><br>")

    for (var posicao1 = quantidade; posicao1 > 0; posicao1--) {
        posicao2 = quantidade - posicao1;
        var item = ingredientes[posicao2];
        document.write("Ingrediente " + (posicao2 + 1) + " - " + item + "; <br>");;
    } 

</script>

Espero que sua dúvida tenha sido solucionada. Qualquer outra questão estou a disposição.

Abraços. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software