ciencia-computacao-unip / numerical-bases-converter

Conversor de bases numéricas
0 stars 4 forks source link

[objetivo] Converter um número da base 10 para qualquer outra base (função) #5

Closed victorperin closed 8 years ago

rockpraxedes commented 8 years ago

Não seria mais facil converter o de bs 10 pra binario, daiii converter para outras ? Ja vi umas coisas ae -.-'

teriamos que converter tudo q inserirmos para String, fazer um array, verificar o tamanho, e depois converter pra binario. Dai de binario fica mais facil converter para qualquer outra. usando aquela formula

2^3+2^2+2^1+2^0+,2^-1......... eu não sei muita coisa que eu entenda entao.... a aydasdaushdas

import java.util.Scanner;
import java.text.DecimalFormat;

public class converson {
    public static void main(String[] args) {

    //DecimalFormat num[] = new DecimalFormat("###,000"); #############  Como faz para colocar limite  de caracter ? ##############
    //double num[] = new double[20]; ?????????????

    Scanner ler = new Scanner(System.in);

    System.out.println("Insira um numero DECIMAL para converter para binário")
    int num = ler.nextInt();
    String bin = "";  
    while (num>0) {  
        bin = ((num % 2 == 0)?"0":"1" ) + bin;  
        num /=2;  
        }
    System.out.printf(bin);
    }
}
victorperin commented 8 years ago

Primeiro: Vlw pelo código.

Segundo: Só para explicar melhor as coisas: Vamos converter uma dada base para outra. Segue o "workflow":

A diferença de uma base para outra não muda a dificuldade e sim a quantidade de dados a armazenar (quanto menor a base maior a string para armazena-la.), além disso, a quantidade de loops vai aumentar, dada a quantidade de operações de divisão que você vai ter que fazer.

O que muda na verdade são pucas coisas, olha:

import java.util.Scanner;
import java.text.DecimalFormat;

public class converson {
    public static void main(String[] args) {

    //DecimalFormat num[] = new DecimalFormat("###,000"); #############  Como faz para colocar limite  de caracter ? ##############
    //double num[] = new double[20]; ?????????????

    Scanner ler = new Scanner(System.in);

    System.out.println("Insira um numero DECIMAL para converter para binário")
    int num = ler.nextInt();
    String bin = "";  
    while (num>0) {  
        bin = ((num % 10 == 0)?"0":"1" ) + bin;  
        num /=10;  
        }
    System.out.printf(bin);
    }
}

PS: Estamos fazendo em JavaScript, que é bem diferente de java...

victorperin commented 8 years ago

Trabalhando em cima dessa explicação: http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch03s03.html#_conversao_de_numeros_da_base_10_para_uma_base_b_qualquer

victorperin commented 8 years ago

Sérgio, to tentando usar essa lógica que você escreveu, mas ela fica travada e roda infinitamente. Me ajuda a repensar ela ai... hahaha

victorperin commented 8 years ago

Sendo implementado no pull request #10 (Ainda não faz conversões de numeros fracionarios... trabalhando nisso)