Ir ao conteúdo
  • Cadastre-se
Visitante

Iniciante java - variável

Recommended Posts

Visitante

Olá, estou a fazer um exercício de c++ em java e ele precisa de numeros bem grandes ( imprimir a 199º linha do triangulo de pascal) ( no c++ estava declarando a variável como long long ).

No java o long não conseguiu suprir isso, alguém sabe um jeito de contornar isso?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  •    6
    Visitante

    você pode dar um help? Eu andei olhando na net e falam que é imutável, mas no meu código tenho q associar um vetor big integer o tempo todo com valores como 1, 199...

     

    [Edit]

    Consegui fazer as contas com ele mas o java aponta este erro:

    Exception in thread "main" java.lang.NullPointerException
            at Triangulo_Pascal.gerar(Triangulo_Pascal.java:20)
            at Triangulo_Pascal.main(Triangulo_Pascal.java:38)

    Linha 38:                 gerar(n_linhas, vetor);

    Linha 20:             vector[j] = vector[j-1].add(vector[j]);

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O BingInteger é imutável sim. Você sempre precisa coletar outra referencia após realizar operações, por exemplo:

     

    BigInteger i = new BigInteger("1"); // Inciando com 1
    i = i.add(new BigInteger("10"));

    Seu nullpointer não tem relação com o fato dele ser imutável. Cole a linha 20 do seu source. Vamos analisar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    6
    Visitante
    5 minutos atrás, Eduardo Frazão disse:

    voce pode colar o source todo?

    import java.util.Scanner;
    import java.math.BigInteger;
    public class Triangulo_Pascal{    
        public static void imprimir(int n_linhas, BigInteger[] vetor){
            System.out.printf("linha %d: ", n_linhas);
            for (int k = 1; k <= n_linhas+1; k++){
                if (k == n_linhas + 1){
                    System.out.printf("1 ");
                }
                else{
                    System.out.printf("%d ", vetor[k]);
                }
            }
            System.out.printf("\n");
        }
        
        public static void gerar(int n_linhas, BigInteger[] vetor){
            BigInteger[] vector = new BigInteger[n_linhas+1];
            for(int j = 1; j <= n_linhas; j++){
                vector[j] = vector[j-1].add(vector[j]);
    
            }
            for(int l = 0; l <= n_linhas; l++){
                vetor[l] = vector[l];
            }
        }
        
        public static void main(String[] args){
            Scanner input = new Scanner( System.in );
            int i, n_linhas;
            n_linhas = input.nextInt();
            while(n_linhas >= 0 && n_linhas <= 200){
                BigInteger[] vetor = new BigInteger[n_linhas+2];
                for (int a = 1; a <= n_linhas ; a++)
                    BigInteger vetor[a] = new BigInteger("0");
                BigInteger vetor[0] = new BigInteger("1");
                for (int b = 0; b <= n_linhas; b++)
                    gerar(n_linhas, vetor);
                imprimir(n_linhas, vetor);
                n_linhas = input.nextInt();
            }
        }
    }

    Até colocar o BigInteger o programa rodava, aí dps vi que as variáveis estouravam (porque preciso que rode de 0 a 200 (linhas do triangulo de pascal) e usa numeros mt grandes, daí tive que mexer com o big, mas é todo diferente x(

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Criar uma conta

    Crie uma nova conta em nossa comunidade. É fácil!

    Crie uma nova conta

    Entrar

    Já tem uma conta? Faça o login.

    Entrar agora





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×