No internet connection
  1. Home
  2. Dúvidas Gerais

1059 Saída impar inesperada

Boa tarde!

Alguém pode me dizer aonde estou errado?
Na saída do Beecrowd está imprimindo números ímpares tbm. Mas no Vscode não.

let cont= parseInt(lines.shift());
while (cont<=100){
let resto=cont&2;
if(resto == 0){
console.log(cont);
}
cont = cont+1;
}

  • 6 respostas
  1. Julio @Julio
      2023-10-28 18:55:20.247Z2023-10-28 19:03:46.527Z

      Nesse exercício não existe uma entrada, então a sua variavel 'cont' não esta recebendo nada, inicialmente.

      O correto seria atribuir o valor 2 a ela.

      E a formula correta do Resto (ou mod, como vai ouvir com mais frequencia), é o %;
      Ex: n % 2 === 0 -->> é um número par. Resto da divisao por 2 é 0.

      E dica, sempre que for fazer comparação com o numero 0, utilize três iguais. Pois o numero 0 com dois iguais pode ser considerado como null ou undefined ou false. O que as vezes pode 'quebrar' seu algoritmo.

      Seu código deveria ficar mais ou menos assim:

      .
      .
      .
      .
      .

      
      let count = 2;
      while(count <= 100){
        let resto = count % 2
        if(resto === 0){
          console.log(count)
        }
      
        count = count + 1
      }
      
      
      1. Em resposta amoniquecamelo:
        Christian Amsberg Janner @calemao
          2023-10-31 22:31:30.629Z

          Olha eu fiz de maneira diferente de você, em vez de usar o while eu utilizei o "for" porém no seu código tente mudar o igual do "if" para 3 iguais da seguinte forma:

          if(resto === 0){

          1. Em resposta amoniquecamelo:
            Christian Amsberg Janner @calemao
              2023-10-31 22:33:28.870Z

              se quiser deixar seu código um pouco mais "limpo" ou "bonitinho" mude essa parte final do código para:

              console.log(cont);
              }
              cont++
              }

              A principal diferença técnica está na forma como o valor de count é modificado. Com count++, o incremento ocorre após o uso do valor na expressão, enquanto com count = count + 1, o incremento ocorre explicitamente na atribuição, após a avaliação da expressão. Em termos de resultado final, ambos os métodos aumentam o valor da variável em 1. A escolha entre eles geralmente depende da preferência pessoal e do estilo de codificação. O uso do operador ++ é mais conciso, enquanto a adição explícita é mais clara em termos de intenção do código.

              1. V
                Em resposta amoniquecamelo:
                Victor Biguete @victorbiguete
                  2023-10-31 00:32:15.741Z

                  Monique, ao meu ver, seu erro está na operação de resto, você colocou & ao invés de % e quando for fazer a comparação use === ao invés de só ==.

                  1. J
                    Em resposta amoniquecamelo:

                    Acredito que seja mais fácil pensar e usar o for, porque você sabe exatamente o número de vezes que precisa repetir ou contar, então o for é mais visual. O while dizem e eu prefiro pensar assim também, pra usar quando não se sabe quantas vezes ele vai rodar.
                    Nesse caso você precisa passar do 1 até o 100 e imprimir todos os números par, incluindo o 1 e o 100.
                    É legal você testar isso no vs code, já que não tem input.
                    Faz o for e faz ele passar as 100 vezes.
                    Pensa na condição para o número ser par, no caso n % 2 ===0;
                    Coloca em um if, e passa o n junto com o indice (n[i] % 2 ===0);
                    E se colocar um console.log dentro do for, você vai ver quais os números que são.
                    Se até ai estiver certo, é só colocar a variável count dentro como você fez e depois imprimir ela.
                    Bom usar também o count ++;
                    p.s escrevi impar antes, perdao hahaha

                    1. Em resposta amoniquecamelo:
                      Lucas Stutz @lucas.stutz
                        2023-11-02 14:54:38.956Z

                        Uma opção alternativa seria utilizar o for, definir o i com 1 e suas restrições, como ser menor igual a 100 e ter o acréscimo a todo loop, depois fazer a verificação se é par com %2===0 e depois simplesmente ler i.