Ir ao conteúdo

Posts recomendados

Postado

Preciso de um algoritmo cuja a entrada vai ser sempre decimal, e a saida  vai ser, binário, octal ou hexadecimal

 

porém não consigo fazer um codigo que funcione:

 

esse meu codigo na base 2 não retorna o valor correto, além de que eu ainda preciso ler os valores de traz para frente mas não sei como,

a ideia original era criar um unico algoritmo, que faria as divizoes sucesivas do numero e a base(numero/base, numero%base), sarvaria o resto em um vetor, leria o vetor de traz para frente usando o vetor A, para converter os valores em string.

 

mas não sei como fazer.

 

QString NNatural::mudarBase(int base)const{
    QString A[16]; //QString é um tipo de string dentro do programa QT
    //int B[16];
    QString s;
    int x=numero;

    A[0]="0";A[1]="1";A[2 ]="2";A[3 ]="3";A[4 ]="4";A[5 ]="5";A[6 ]="6";A[7 ]="7";
    A[8]="8";A[9]="9";A[10]="A";A[11]="B";A[12]="C";A[13]="D";A[14]="E";A[15]="F";

    if(base==2){
        for(int i = 0 ; i < x ;i++){
            if(x%2==0){
                s = s + "0";
            } else{
                s = s + "1";
            }
            x=x/2;

        
        }
	return s;
    }
return "erro";


}

 

Postado
QString NNatural::mudarBase(int numero, int base)const{
    QString A[16]; //QString é um tipo de string dentro do programa QT
    //int B[16];
    QString s;
 	int resto = 0;
	int binário = 0;
	int produto = 1;

    A[0]="0";A[1]="1";A[2 ]="2";A[3 ]="3";A[4 ]="4";A[5 ]="5";A[6 ]="6";A[7 ]="7";
    A[8]="8";A[9]="9";A[10]="A";A[11]="B";A[12]="C";A[13]="D";A[14]="E";A[15]="F";

    if(base==2){
		while (numero!=0)
		{
			 resto = numero % 2;
    		 binário += (resto * produto);
    		 numero /= 2;
    		 produto *= 10;
        
        }	
	    return QString::number(binário);
    }
	return "erro";


}

Uma das formas de se fazer é assim

Postado

@Cairo Alberto Se sua função já recebe a base como argumento, o cálculo no loop podia ser com essa variável e não com uma constante como fez ao usar o número 2. Com o valor do parâmetro o mesmo loop vai servir para qualquer base passada como argumento para a função (no caso da 16 faça a condicional para trocar colocar or letras de A a F). E a função também poderia ter o parâmetro com o número da base 10, assim é só passar os dois valores para a função retornar o número convertido, p.ex,

QString NNatural::mudarBase(int numero, int base)

 

Postado
4 horas atrás, Cairo Alberto disse:

porém não consigo fazer um codigo que funcione:

 

As funções, quase sempre são definidas a termos de outras funções. Se construir uma função para cada conversão de base numérica sendo o contrário de todas as conversões de uma só vez, no final terá o necessário para agrupar essas soluções num único procedimento intuitivo. Os exemplos de funções de conversão existem, aos montes, e não tenho nada acrescentar àquelas que existem.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!