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

Receitas do Yan - deu trabalho mas não eliminei todos os bugs

Trabalhei bastante, mas ainda me faltam conhecimentos para evitar que o sistema bugue se entrar vazio ( apertar enter somente quando solicitado o ingrediente) e evitar que dê loop infinito quando se pressiona ESC.

Caso tenham alguma recomendação, eu ficaria muito agradecido. Percebo claramente, de longe, que o código não é o melhor para essa função.

Mas segue:

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>
    function escreve(n) { document.write(n+"<br>");}

    var ingredientes = [];

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
    //caso seja menor que um item, nega a inserção
    if(quantidade <= 1 ){ 
        alert("Você precisa adicionar pelo menos um ingrediente!!! Reinicie o programa!");         
    }else{

        var contador = 1;
        while( contador <= quantidade) {

            repetido=false;

            //caso seja o primeiro item do array, não compara items anteriores    
            if(contador == 1){
                var ingrediente = prompt("Informe o ingrediente " + contador);
                ingredientes.push(ingrediente);
                contador++;
                escreve(ingrediente);
            }else{
            //não é o primeiro item e parte para comparação das posições

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

                for(var posicao = 0; posicao < quantidade; posicao++ ){
                    if(ingrediente == ingredientes[posicao]){
                        console.log(ingredientes[posicao]);
                        alert("não se pode utilizar ingredientes repetidos!");
                        repetido=true;
                    }

                }
                //caso não ache items repetidos na lista, incrementa o item digitado
                if(repetido == false ){
                        ingredientes.push(ingrediente);
                        contador++;
                        escreve(ingrediente);
                        }
                }
            }
        }


    console.log(ingredientes);


</script>

Realmente agradeço todos os feedbacks, mesmo que negativos.

Inté +

3 respostas

Olá André

Fiz uma versão otimizada utilizando o seu código. Ainda não tem algumas validações como a verificação se parâmentro informado na primeira pergunta é um número ou se o número de ingredientes informado é maior ou igual a 2

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

  function escreve(n) { document.write(n + "<br>"); }

  var ingredientes = [];

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

  if (quantidade <= 1) {

    alert("Você precisa adicionar pelo menos dois ingredientes!!! Reinicie o programa!");

  } else {

    var contador = 1;

    while (contador <= quantidade) {

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

      if (ingredientes.includes(ingrediente)) {
        alert("não se pode utilizar ingredientes repetidos!");
      } else {
        ingredientes.push(ingrediente);
        contador++;
        escreve(ingrediente);
      }
    }
  }


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

ótimo Guilherme.

Fica bem mais clean sem os comentários. Valeu!!!

As validações eu pensei em fazer com funções para deixar o código mais tranquilo.

Bora lá para algoritmos 2.

Logo eu retornarei a esses código e, provavelmente, olharei pra ele e falarei: Jesussss.... kkkkkk

Inté +

André,

Você pode definir o tópico como solucionado, por favor?

Caso tenha alguma dúvida estou à disposição para ajudar!

Obrigado,