Desmembrar inteiro

11 respostas
van_bommel

Como desmembrar um inteiro de 5 digitos?

regras de divisão por favor pseudocodigo.

11 Respostas

E
x = 31415;
d5 = x % 10; // recebe 5
x = x / 10; // recebe 3141
d4 = x % 10; // recebe 1
x = x / 10; // recebe 314
d3 = x % 10; // recebe 4
x = x / 10; // recebe 31
d2 = x % 10; // recebe 1
x = x / 10; // recebe 3
d1 = x % 10; // recebe 3
J

ou converte pra uma String e pega caracter a caracter…

E

Se o número for negativo, passe o número para positivo, faça as divisões e restos (módulos) como eu fiz acima, e depois ponha o sinal de volta.

van_bommel

Não tem uma forma mais didatica de fazer ?

E

:!:

Luiz_Aguiar

vc precisa fazer isso exatamente pra quê?

sabendo qual é o “problema” talves se tenha uma lógica melhor?

acho que passar pra String e pegar cada caracter pode ser mais fácil de entender, se for o caso.

bernardo.rafael

Dá uma olhada se assim ajuda.
Segue um código comentado.

/**
 * Desmembra um número inteiro em um array com cada digito do número
 *  informado. Os dígitos no array estão na mesma ordem que informado
 *  em <code>numero</code>.
 * @param numero Número a ser desmembrado.
 * @return Um array com os membros do numero informado. Se o número
 *               informado for igual a 0 (zero), será retornado um array
 *               vazio.
 */
public static Integer[] desmembrar(int numero){
	// cria uma lista para abrigar cada membro do numero informado
	java.util.List<Integer> membros = new java.util.ArrayList<Integer>();
	
	// salva a variavel numero em outra temporaria.
	int temp = numero;
	// valida a existencia de um proximo membro.
	while( temp != 0 ){
		// extrai o membro.
		int membro = temp % 10;
		
		// adiciona o membro na lista
		membros.add(new Integer(membro) );
	
		// altera a variavel para extrair o proximo membro.
		temp = temp / 10;
	} 

	// inverte a ordem da lista para restaurar a ordem dos dígitos.
	java.util.Collections.reverse(membros);
	
	// transforma a Lista em um Array e retorna o resultado.
	return membros.toArray(new Integer[ membros.size() ]);
}

espero que ajude.

van_bommel
escreva um aplicativo que le um inteiro de 5  digitos 
e desmembra o numero exemplo 42339 o programa deve impirmir 
4 2 3 3 9 

vc precisara usar tecnicas de divisão e resto da divisão para selecionar os digitos 


exemplo entrada 12345  do usuario 

public static void  desmembramentoRegraDeDivisao ( int n ) {

   int num = n ;
   int d5 = num%10 ;
   n = n / 10 ;
   int d4 = num%10 ;
   n = n / 10 ;
   int d3 = num%10 ;
   n = n / 10 ;
   int d2 = num%10 ;
   n = n / 10 ;
   int d1 = num%10 ;
   
   JOptionPane.showMessageDialog ( null, " Digitos desmembrados " + d1 + " "+  d2 + " " + d3 + " " + d4 + " " + d5 );

  }


eu fiz dessa forma e ta dando errado --"  
imprimi 5 5 5 5  5



import javax.swing.*;
  public class ExerDivisao {

   public static void desmembramentoPorString ( String v ) {
     
     String resp = "";
    for (int i=0; i < v.length(); i++) {
     resp = resp + " " + v.charAt(i) ;
    }

    System.out.println( resp );

    }

    

  tbm tem essa forma aki em baixo mais ele pediu para usar tecnicas de divisão   
  
  
  public static void main ( String [ ] args ) {

  String aux = JOptionPane.showInputDialog ( "Insira 5 numeros  " );
  int n = Integer.parseInt ( aux);
  
   desmembramentoRegraDeDivisao ( n);





  }
  }
bernardo.rafael

É porque você fez uma atribuição usando a variável errada.
Você usou:

n = n / 10 ;

onde deveria ter usado:

num = num / 10 ;
E

Estou vendo muitos documentários sobre psicopatas. Quando vi esse título “desmembrar inteiro” já pensei em algum serial killer :frowning:

van_bommel
/*

 escreva um aplicativo que le um inteiro de 5  digitos   
 e desmembra o numero exemplo 42339 o programa deve impirmir   
 4 2 3 3 9   
   
 vc precisara usar tecnicas de divisão e resto da divisão para selecionar os digitos 


    
  */ 
   import javax.swing.*;
    public class Exercicio5{
   
       public static void  desmembramentoRegraDeDivisao ( int n ) {  
      
       // d1 = 2  > ( 24.749 / 10.000 )
         int d1 = n / 10000;
         //   resto = 4.749
         n = n % 10000;
         
         // d2 = 4 > ( 4.749 /1.000 )
         int d2 = n /1000;
      	// resto = 749
      	n= n % 1000;
      	
      	// d3 = 7 > ( 749 /100 )
      	int d3 = n / 100;
      	// resto =  49
      	n= n % 100;
      	
      	// d4 =  4 > ( 49 / 10 )
      	int d4 = n/ 10;
      	// resto = 4;
      	n= n% 10;
      	
      	// resto =  d5 = 9;
         int d5 = n; 
      
         JOptionPane.showMessageDialog ( null, " Digitos desmembrados "+d1+"  "+d2+"  "+d3+"  "+d4+"  "+d5  );  
      
      }  
     
    
   
   
   
       public static void desmembramentoPorString ( String v ) {  
        
         String resp = "";  
         for (int i=0; i < v.length(); i++) {  
            resp = resp + " " + v.charAt(i) ;  
         }  
      
         System.out.println( resp );  
      
      }  
   
   
     
     
       public static void main ( String [ ] args ) {  
      
         String aux = JOptionPane.showInputDialog ( "Insira 5 numeros  " );  
         int n = Integer.parseInt ( aux);  
      
         desmembramentoRegraDeDivisao ( n);  
      
      
      
      
      
      }  
   }

valewww.

Criado 8 de outubro de 2009
Ultima resposta 12 de out. de 2009
Respostas 11
Participantes 5