10
respostas

Código não está dando certo!

Receitas do Yan

Gostaria de saber porque não está dando certo? quando coloco o ingrediente no input e ele não da o push pra dentro do array.

10 respostas

Olá Bruna,

Você pode postar o seu codigo aqui para que eu possa analisar?

Bruna,

Já adiantando... O código a ser desenvolvido é o seguinte:

<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);

        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);
</script>

Receitas da Bruna

-<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Lógica de Programação</title>

</head>
<body>
  <h1>Receitas da Bruna</h1>
  <input type="text">
  <button>Adicione os Ingredientes</button>


  <script>
    var input = document.querySelector("input");
     input.focus();

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


   function adicionar(){

      while( contador <= quantidade) {


          var existe = false;

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

              if(ingredientes[posicao]== input.value ){
                  existe = true;
                      break;
              }

        }
          if(existe==false){
              ingredientes.push(input.value);
               contador++;
         }
    }

    input.value = "";
    input.focus();

  }
    console.log(ingredientes);

   var button =  document.querySelector("button");
   button.onclick = adicionar;

  </script>
</body>
</html> 

Olá Bruna,

O problema é que a condição do while (contador <= quantidade) está entrando em loop infinito.

Na primeira iteração ele adiciona o valor dentro do array ingredientes, mas na segunda e em todas as outras o array entra em loop infinito porque o valor que está no input não muda e esse mesmo valor já está dentro do array ingredientes, fazendo com que a variável contador nunca seja incrementada e o loop do while nunca termine.

Bruna,

Caso não tenha entendido eu posso fazer um ajuste em seu código para que ele funcione da maneira que deseja.

Eu queria fazer com que os ingredientes que eu colocasse dentro do input, e quando eu desse o button.onclick eu adicionasse meu ingrediente dentro do array.

Olá Bruna,

Veja se o seguinte código está se comportando conforme o esperado:

<html lang="en">

<head>
  <title>Lógica de Programação</title>
</head>

<body>
  <h1>Receitas da Bruna</h1>
  <input type="text">
  <button>Adicione os Ingredientes</button>


  <script>
    var input = document.querySelector("input");
    input.focus();

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


    function adicionar() {

      if (contador > quantidade) {
        alert("Todos os ingrediente já foram adicionados");
        return;
      }

      var existe = false;

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

        if (ingredientes[posicao] == input.value) {
          existe = true;
          alert("Esse ingrediente já foi adicionado, por favor informe outro ingrediente!")
          break;
        }

      }

      if (existe == false) {

        ingredientes.push(input.value);

        if (contador == quantidade) {
          console.log(ingredientes);
        } else {
          input.value = "";
          input.focus();
        }

        contador++;

      }

    }

    var button = document.querySelector("button");
    button.onclick = adicionar;

  </script>
</body>

</html>

Olá Bruna,

Se houver alguma dúvida fique à vontade para postar aqui.

Bruna,

Você pode por gentileza encerrar o tópico caso o seu problema tenha sido resolvido?