Boa tarde, pessoal, estou com dúvida em como permitir a entrada de duas linhas do input e alocar cada valor à sua respectiva variável, conforme pede o Exercício Beecrowd 1010. Sei que em Python podemos usar uma função chamada 'map', então acredito que seja algo parecido, mas não tenho certeza. Segue o enunciado da questão 1010:
In this problem, the task is to read a code of a product 1, the number of units of product 1, the price for one unit of product 1, the code of a product 2, the number of units of product 2 and the price for one unit of product 2. After this, calculate and show the amount to be paid.
Input
The input file contains two lines of data. In each line there will be 3 values: two integers and a floating value with 2 digits after the decimal point.
Output
The output file must be a message like the following example where "Valor a pagar" means Value to Pay. Remember the space after ":" and after "R$" symbol. The value must be presented with 2 digits after the point.
Input Samples
12 1 5.30
16 2 5.10
Output Samples
VALOR A PAGAR: R$ 15.50
Natália Stoll Nogueira @nataliastollVou te falar do jeito que entendi:
São 2 entradas :
12 1 5.30 // linha1
16 2 5.10 // linha2Como no Beecrowd temos declarado:
var lines = input.split('\n');
Se você der um console.log(lines) o que retorna é algo assim:
[12 1 5.30,16 2 5.10]
Pois o método split pode ser utilizado para criação de um array com as 2 linhas de entrada.Quando usamos o método split, as entradas são armazenadas num array que contém 2 itens com 3 variáveis cada, vamos dizer, p1 e p2:
p1 = x1, y1, z1;
pq = x2, y2, z2;Sendo p1 na posição "0" e p2 na posição "1" do vetor.
Aí temos que dar outro split para separar as variáveis de p1 e p1:
var p1 = lines[0].split(" ");
var p2 = lines[0].split(" ");Se vc imprimir console.log(p1),fica assim:
[12 1 5.30]Mas ao invés de armazenar o vetor dentro de p1 e p2, você já pode fazer uma desestruturação direto:
var [x1, y1, z1] = lines[0].split(" "); var [x2, y2, z2] = lines[1].split(" ");Vê se consegui explicar, foi o jeito que consegui entender quando estudei sobre isso. Mas tô super no começo, ainda lutando pra entender essas coisas que já são básicas pra muita gente, então já peço desculpa se errei algo. E se alguém tiver algo diferente pra acrescentar, ou até mesmo corrigir, agradeço :)
Em resposta aandreysgd⬆:MARCUS VOGADO @MarcusVogadoDa uma olhada nesse tópico tento explicar como funciona a captura de dados do beecrowd, para entradas com duas linhas e quando a entrada vem em uma linha e temos que separa-la.
segue o link :
Como Capturar dados de entrada no beecrowd- WEm resposta aandreysgd⬆:Walace Abreu @walaceAbreu
você pode fazer:
let valores1 = lines[0].split(" "); //valores1 = ["12", "1", "5.30"]; let valores2 = lines[1].split(" "); //valores2 = ["16", "2", "5.10"];depois disso você pode ir convertendo as strings em int ou float ou number
- CEm resposta aandreysgd⬆:Camila Vieira @CamilaVieira
Oi, Andrey. Acredito que dá pra pegar o valor de cada linha separadamente assim:
let linha1 = lines.shift() let linha2 = lines.shift()Sendo assim o valor da variável 'linha1' seria: 12 1 5.30. E o valor da 'linha2' seria: 16 2 5.10.
Pra separar cada valor da linha dá pra usar o método .split(" ").let [produto, unidades, preco] = linha1.split(" ")Assim você faz a desestruturação do array, colocando o valor de cada índice nas respectivas variáveis: 'produto', 'unidades' e 'preco'.
Em resposta aandreysgd⬆:marcelo jhones @MarceloJhonesDevvocê pode fazer dessa maneira:
var input = require("fs").readFileSync("stdin", "utf8");
var lines = input.split("\n");let [codProd1, unidadesProd1, precoUnidadeProd1] = lines.shift().split(" ").map(Number);
let [codProd2, unidadesProd2, precoUnidadeProd2] = lines.shift().split(" ").map(Number);lines.shift() pega a linha e o split divide os valores espaçados como 12 1 5.3 e joga isso nas variáveis dentro de [ ]
- AEm resposta aandreysgd⬆:Andrey Guedes @andreysgd
Obrigado, pessoal!!! Consegui compreender, valeu mesmo