5

Área Superior como consertar!

#JavaScript
Josélio Júnior
Josélio Júnior

Olá pessoal!

Hoje estava revendo o desafio da Área Superior e com a base de dados original parei para entender melhor o erro que estava acontecendo.


Ocorre um erro na entrada de alguns testes que podem ser contornados.


Lembrando que você consegue completar o grupo de desafios sem esse conserto, mas se você também quer ajustar, então vamos lá! 🌟



Nesse desafio temos uma entrada:

S
1.0
330.0
-3.5
2.5
4.1
...

Com uma saída esperada:

112.4


O que acontece é que nos testes 9 e 10 as entradas estão distribuídas da seguinte forma:

S
-25   36  -31   64  -60   46  -18   32   26  -54   87   79
-92  -29    9   28  -40  -16  -82   47  -24  -66  -39    1
 19   51  -70  -78   45   52  -83   88  -62  -47  -48  -15
 53   -3  -57  -17   22  -41   94   -5  -74  -42  -85  -26
...


Dessa maneira é necessário um algoritmo que dê suporte tanto a uma forma de entrada de dados quanto a outra.


Sendo assim, se seu algoritmo precisa passar apenas nos testes 9 e 10, então você só precisa criar uma via alternativa. Onde caso a entrada seja separada por quebra de linha, como deveria, então use o algoritmo normal. E caso venha da outra forma passe por um algoritmo que trate a entrada de modo que você consiga obter a matriz 12 x 12 que o desafio pede em ambas situações.


Para que você possa montar o algoritmo da via alternativa estarei disponibilizando uma entrada e a saída esperada.


Entrada

S
-25   36  -31   64  -60   46  -18   32   26  -54   87   79
-92  -29    9   28  -40  -16  -82   47  -24  -66  -39    1
 19   51  -70  -78   45   52  -83   88  -62  -47  -48  -15
 53   -3  -57  -17   22  -41   94   -5  -74  -42  -85  -26
 68  -91  -86  -80   48   65  -53   -2   71   69  -69   66
-98  -20  -51  -23   86   93  -56  -81  -93   72  -63   89
-55   40   55   50  -33   35   76  100   29  -97  -61    8
-11  -32    7  -71  -64    0  -58   25   11   82  -94   -8
 95   24   23  -52   38   31  -49   12   77   67   60  -45
-59  -10   42   97   63  -75  -77   98   75   -9  -38   96
-50    4   18  -88    3   21   44   91  -95   80  -65   78
 30   -4  -72   59  -67  -21   70  -19   54  -90  -14  -13

Saída esperada

28.0


Tem mais alguns erros que foram abordados lá no Discord da DIO, então acompanhe os grupos do mrv-front-dev-spa e do capgemini-fullstack-java-angular e veja as conversas de um dia antes da data deste artigo para mais informações.

Link de convite para o Discord da DIO: https://discord.gg/MUdRyVg


É isso pessoal, até mais! 🚀

Contato: GITHUB 🖥

5
358

Comentários (6)

0
RODRIGO PEREIRA

RODRIGO PEREIRA

25/08/2021 13:26

Alguém conseguiu em JavaScript resolver ??

2
Josélio Júnior

Josélio Júnior

14/08/2021 20:47

Thiago > Muito obrigado!!!


Márcio > Valeu Márcio, as expressões regulares são super legais de usar!!!


Patrick > Valeu!!! Qualquer coisa, se precisar, chama lá no grupo!


Alfredo > O artigo foi feito para ajudar as pessoas a criarem seu próprio algoritmo, passar a solução do desafio, ao meu ver, não auxilia em nada no aprendizado e enviesa o pensamento à uma forma de solucionar.

Lembrando que este é um desafio de JavaScript, que é uma linguagem bem distinta, Java pelo método que chama as entradas, através do .nextDouble(), consegue driblar o problema abordado aqui, pois faz a filtragem e a conversão de tipo.

4
A

Alfredo Neto

14/08/2021 16:50

Boa tarde Josélio Júnior O Código correto do desafio area superior em java:


Código:

// Área Superior

/*Leia um caractere maiúsculo, que indica uma operação que deve ser realizada euma matriz M[12][12]. Em seguida, calcule e mostre a soma ou a médiaconsiderando somente aqueles elementos que estão na área superior da matriz,conforme ilustrado abaixo (área verde).vide arquivo em assets area-superior.png• EntradaA primeira linha de entrada contém um único caractere Maiúsculo O ('S' ou 'M'),indicando a operação (Soma ou Média) que deverá ser realizada com os elementosda matriz. Seguem 144 valores com ponto flutuante de dupla precisão que compõema matriz.• SaídaImprima o resultado solicitado (a soma ou média), com 1 casa após o pontodecimal.*/

import java.io.IOException;import java.util.Scanner;

public class AreaSuperior { public static void main(String[] args) throws IOException { Scanner leitor = new Scanner(System.in); double soma = 0; char O = leitor.next().toUpperCase().charAt(0); double[][] M = new double[12][12]; for (int i = 0; i < 12; ++i) { for (int j = 0; j < 12; ++j) { M[i][j] = leitor.nextDouble(); } } for (int i = 0; i < 5; ++i) { for (int j = 1; j < 11; ++j) { if (j > i && i + j < 11) soma += M[i][j]; } }

if (O == 'M') soma /= ((M.length * M.length) - 24) / 4; System.out.println(String.format("%.1f", soma)); }}

Jesus te abençoe com amor, paz e saúde grande abraço SUCESSO DEV

2
Márcio Cardoso

Márcio Cardoso

13/08/2021 06:34

Muito bom.

Pelo que pude ver no seu código, na entrada inicial, vc tá filtrando toda sujeira usando Pattern.

3
Patrick Leite

Patrick Leite

13/08/2021 16:07

Vlw Josélio!

4
Thiago Oliveira

Thiago Oliveira

13/08/2021 00:15

Voce salvou minha vida, mostrando que estava entrando uma mega string

Sou um estudante de Nutrição que mergulhou no mundo da programação em março de 2020.          > github: github.com/joseliojunior

Brasil