Divisao sucessiva

17 respostas
wesleysilva

Ola galera preiciso d uma formula pra encontrar uma divisao sucessiva em java,
alguem pode me ajudar.

17 Respostas

T

Bele.

Pelo que entendi vc precisa de Recursão, mas poderia explicar melhor o que vc precisa ?

até.

wesleysilva

to criando um programa pra converter entre bases, decimal, binario, octal e hexadecimal, pra
saber um valor em decimal pra hexadecimal tem q fazer divisao sucessiva por 16 certo, entao
quero isso uma formula pra fazer isso.

L

Ola amigo!

No java existem metodos prontos que ja fazem isso pra vc…

para converter decimal para hexadecimal, por exemplo, temos :

int numero= 10

     String hexadecimal = Integer.toHexString(decimal);

[]'s

wesleysilva

ola lucasgcp me adiciona no msn ai sou iniciante em java assim vc podera me ajudar melhor,
msn: [email removido]

ok!

L

Agora estou no trabalho… Mas chegando em casa eu adiciono sim…

[]'s

wesleysilva

tudo bem, to tentando aki mas ta um erro, sabe, tenho q criar um programa onde o usuario vai entra com um
numero em uma das bases, dai o program tem que exibir na tela esse mesmo numero nas outras bases.
vc quer ver meu codigo como ta?

L

Claro! Poste ele aqui dentre a tag code para ficar melhor para visualizar…

wesleysilva

ai meu codigo tenho que incrementar uma formula pra fazer uma divisao sucessiva

import java.util.Scanner;

public class Converter
{

    public static void main(String args [])
    {
            
          int binario=0;// 1ª variavel binario 
          int decimal=0;// 2ªª variavel decimal 
          int octal=0;// 3ª variavel octal 
          String hexadecimal;// 4ª variavel hexadecimal 
          int hexadecimal2=0;
          int valor=0;// 5ª variavel numero digitado pelo usuario 
          int resp=0;// 6ª variavel que obtem a resposta 
        
        Scanner leitor = new Scanner(System.in); 

        System.out.println("\n 1 para Binario\n 2 para Decimal\n 3 para Hexadecimal\n 4 para Octal");
        valor = leitor.nextInt();
        
        if (valor == 1)
        {
            System.out.println("Digite o valor em Binario");
            binario = leitor.nextInt();    
            
            resp= binario/10;
            System.out.println("valor em Decimal: "+resp);     
            
            resp= binario/16;
            System.out.println("valor em Hexadecimal: "+resp);     
            
            resp= binario/8;
            System.out.println("valor em Octal: "+resp); 
                    
        }
        
        else if (valor == 2)
        {
            System.out.println("Digite o valor em Decimal");
            decimal = leitor.nextInt();
            
            resp= decimal/2;
            System.out.println("valor em Binario: "+resp); 
             
            tring hexadecimal = Integer.toHexString(decimal);
            System.out.println("valor em Hexadecimal: "+resp);
            
            resp= decimal/8;
            System.out.println("valor em Octal: "+resp);
        }
        
        else if (valor == 3)
        {
            System.out.println("Digite o valor");
            hexadecimal2 = leitor.nextInt();    
            
            
            
            resp = hexadecimal2/2;
            System.out.println("valor em Binario: "+resp); 
             
            resp= hexadecimal2/10;
            System.out.println("valor em Decimal: "+resp);
            
            resp= hexadecimal2/8;
            System.out.println("valor em Octal: "+resp);
             
        }
        else if (valor == 4)
        {
            System.out.println("Digite o valor");
            octal = leitor.nextInt();
            
            resp= octal/2;
            System.out.println("valor em Binario: "+resp); 
             
            resp= octal/10;
            System.out.println("valor em Decimal: "+resp);
            
            resp= octal/16;
            System.out.println("valor em Hexadecimal: "+resp);
             
        }
        
    }

}
L

Deixe-me ver se intendi…

Voce nao vai querer usar os metodos prontos do java?
Vai preferir fazer os seus?

wesleysilva

sim o professor pediu que pra nao usar, tem que ser nossos metodos,
tem como vc me ajudar,

T

Usa recursão.

Segue 1 pequeno caminho, dá 1 pesquisada sobre o assunto:

public String retornaBinario(double numeroDecimal){
		
		if (Math.floor(numeroDecimal / 2) == 0){
			if ((numeroDecimal % 2) == 0){
				return "0";
			}else{
				return "1";
			}
		}else {
			if ((numeroDecimal % 2) == 0){
				return "0" + String.valueOf(retornaBinario(numeroDecimal / 2));
			}else{	
				return "1" + retornaBinario(Math.floor(numeroDecimal / 2));
			}
		}
	}
wesleysilva

mas ainda nao estamos vendo esses metodos amigo, o prof. falou q tem q ser com nossos metodos tudo bem simples.

L

De uma estudada nas estruturas de repetição entao…

While, for, e etc…

T

Segue 1 exemplo de transformação de decimal para binario, da maneira mais simples.

public String retornaBinario(double numeroDecimal){
		String continua = "s";
		String binario = "";
		double auxiliar = numeroDecimal;
		do{
			if (Math.floor(auxiliar / 2) == 0){
				continua = "n";
				if ((auxiliar % 2) == 0){
					binario = "0" + binario;
				}else{
					binario = "1" + binario;
				}
			}else {
				if ((auxiliar % 2) == 0){
					auxiliar = auxiliar / 2;
					binario = "0" + binario;
				}else{	
					auxiliar = Math.floor(auxiliar / 2);
					binario = "1" + binario;
				}
			}
		}while (continua.equals("s"));
		
		return binario;
	}
wesleysilva

ola amigo, muito bom esse metodo mas acho q o prof. nao vai querer assim nao, existe medoto mais simples?
como no meu codigo, algo que possa ser implementando a ele.

T

è só pegar o codigo do metodo e implementar no seu codigo.

wesleysilva

certo, vou tentar aki mas acho q nao conseguirei nao, pois nao vi ainda esses metodos.

Criado 19 de abril de 2011
Ultima resposta 19 de abr. de 2011
Respostas 17
Participantes 3