Melhor forma de ler vários valores de entrada
Gostaria de ideias sobre como ler de forma simples sem tanta linha de código, vários valores de entrada como por exemplo:
7
-5
6
-3.4
4.6
12
Teria como fazer essa leitura com apenas uma linha de código?
Marcele Eller Gusmão Moura @marceleellervocê pode ler criando um array, exemplo:
let number = lines.map(item => parseInt(item))Desse jeito você vai criar um array já com os valores em tipo number.
Pra acessar esses valores é só usar o Index: number[0], number[1]...
Matheus V. Zarpellon @matheuszarpellonEu não recomendo fazer assim, porque dentro do lines (no exemplo ilustrado) existem valores int e float, se passar int, vai arredondar os quebrados, então a melhor forma é converter em Number, que é dinâmico e aceita os 2 tipos.
Marcele Eller Gusmão Moura @marceleellerQuando é float só colocar parseFloat, fiz todos exercícios assim
Em resposta aeva⬆:Natália Stoll Nogueira @nataliastollSe forem vários valores na mesma linha:
var [A, B, C, D] = lines.shift().split(" ").map(Number))Se forem vários valores em linhas diferentes, como no exercício do Beecrowd 1007:
var [A, B, C, D] = lines;Se forem 2 valores por linha, como no exercício do Beecrowd 1015:
var [x1, y1] = lines[0].split(" "); var [x2, y2] = lines[1].split(" ");Testa e se tiver qualquer problema, estou à disposição :)
- CEm resposta aeva⬆:Camila Vieira @CamilaVieira
Dá pra fazer em uma linha sim. Faz assim:
let [A, B, C] = lines.shift().split(" ").map(item => parseInt(item))O .split(" ") é pra transformar a string em um array, separando a cada espaço em branco. O método .map() pega cada item desse array e retorna o valor no tipo inteiro. Com o [A, B, C], o array será desestruturado e o valor de cada índice será armazenado nas variáveis A, B e C.
Em resposta aeva⬆:Matheus V. Zarpellon @matheuszarpellonExistem algumas formas de lidar com isso.
Se você quiser armazenar os valores em diferentes variáveis, você pode utilizar:
let [A, B, C, D, E, F] = lines.map(Number)O map vai percorrer os itens do array, que são strings, converter pra números, e eles serão armazenados nas variáveis, na mesma ordem, tendo 6 variáveis (A...F) numéricas.
Se você não precisa separá-los e quer apenas convertê-los e armazená-los em uma variável transformando o array de string em numérico, você utiliza:
let numbers = lines.map(Number)Assim você terá uma nova variável escolhida por você, com os valores convertidos em número.
- TEm resposta aeva⬆:Thiago Regueira @thiagoregueira
teria como criar um laço de repetição para ler quantos dados forem necessários, abaixo deixo um exemplo com laço for, inclusive é de um dos exercícios do beecrowd.
let quantidadePositivos = 0;
for (let i = 1; i <= 6; i++) {
const valor = parseFloat(prompt("Digite um valor:"));if (valor > 0) {
quantidadePositivos++;
}
}console.log(quantidadePositivos + " valores positivos");
Nesse caso o código lerá 6 valores digitados pelo usuário.
Em resposta aeva⬆:Matheus Panobianco @matheus_panobiancoOi.
O beecrowd ja entrega o "lines" como um array por fazer o "split()" no "input".
Você pode fazer a leitura usando diretamente o array lines em um loop, ou atribuir cada valor do array a uma variável que você nomear.
Eu não sei se é a forma correta, mas achei mais facil trabalhar com o laço diretamente no lines.
Em resposta aeva⬆:alzira eva cavalcanti alves @evaObrigada a todos, me ajudaram muito.