image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Christiano Garcia
Christiano Garcia21/02/2023 22:52
Compartilhe

Desafio do bootcamp Pan Americano

    O exercício de programação é o seguinte. Escrever um programa em Java que retorne o valor de H com duas casas decimais onde é dado valor inteiro N e o H é dado pela seguinte fórmula.

    H = 1 + 1/2 + 1/3 + ...... + 1/N

    Segue a minha solução e meus resultados.

    import java.util.Scanner;

    import java.io.*;

    import java.text.DecimalFormat;

    public class Main {

      public static void main(String[] Args) {

       double h = 0;

       Scanner sc = new Scanner(System.in);

       double n = sc.nextDouble();

       for (int i = 1; i <= (int) n; i++) {

                h += (double) 1/i;      

       }

       System.out.println(new DecimalFormat("#,##0.00").format(h));    

      }

    }

    Meus resultados são: H(4) = 2.08 , H(8) = 2.72 e H(3) = 1.83

    Resultados dados nos exemplos H(4) = 2, H(8) = 3 e H(3) = 2.

    Agradeço se alguém puder me ajudar, pois não consigo identificar o erro!!!

    Christiano.

    Compartilhe
    Comentários (4)
    Gabriel Gregorio
    Gabriel Gregorio - 22/02/2023 03:51

    Outra coisa também é a sua lógica, ela está errada,

    o erro está na criação da variável h

    Gabriel Gregorio
    Gabriel Gregorio - 22/02/2023 02:53

    Olá Christiano, você está fazendo muito cast, a quantidade que você recebe é um inteiro, o divisor é o i que já foi criado como inteiro no seu for, a quantidade de vezes que irá repetir , é inteiro concorda?

    Vejo que sua preocupação é a divisão de um double por um inteiro,o mais importante é o dividendo ser double,o divisor não precisa, ele já vai retornar um double.

    Giancarlo Rodrigues
    Giancarlo Rodrigues - 21/02/2023 23:34

    Amigo, a parte lógica e matemática do seu código tá certa. Vc deve estar confundindo alguma coisa no enunciado.


    Reveja a interpretação do enunciado.

    Jose Gobeti
    Jose Gobeti - 21/02/2023 22:56

    Utiliza a seguinte formatação na saída do console:


    System.out.printf("%.0f", h);