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

ENTRADA DE DUAS LINHAS - BEECROWD 1010

Por Andrey Guedes @andreysgd
    2023-10-24 16:00:34.287Z

    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

    Resolvido no post #4, clique para visualizar
    • 6 respostas
    1. Vou te falar do jeito que entendi:

      São 2 entradas :
      12 1 5.30 // linha1
      16 2 5.10 // linha2

      Como 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 :)

      1. Em resposta aandreysgd:
        MARCUS VOGADO @MarcusVogado
          2023-10-24 16:22:25.531Z

          Da 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

          1. W
            Em resposta aandreysgd:
            Walace Abreu @walaceAbreu
              2023-10-24 20:37:19.143Z

              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

              1. C
                Em resposta aandreysgd:
                Camila Vieira @CamilaVieira
                  2023-10-24 20:52:05.454Z

                  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'.

                  ResponderSolução
                  1. Em resposta aandreysgd:
                    marcelo jhones @MarceloJhonesDev
                      2023-10-25 14:25:49.198Z

                      você 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 [ ]

                      1. A
                        Em resposta aandreysgd:
                        Andrey Guedes @andreysgd
                          2023-10-25 22:07:09.997Z

                          Obrigado, pessoal!!! Consegui compreender, valeu mesmo