Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NaoSoul

C++ e conversão para hexadecimal

Recommended Posts

Boa tarde, estou cursando Analise e Desenvolvimento de Sistema eu estou tendo problemas com um exercicio.
O exercicio pede o seguinte:
Faça um programa em C++ para ler um número binario maior que zero, converter este número
para hexadecimal, usando pilha e apresentar na tela, o resultado da conversão.

Usando isso para iniciar a pilha

#include <iostream>
#include "pilha_vetor.h"

int main()
{
	int bin;
	PILHA p;
	cout<<"Insira valor Binario";
	cin>>bin;
	iniciaPilha (p);
	
}


E isso para a conversão:

public static int BinarioDec(String valorBinario) 
{
   int valor = 0;
 
   for (int i=valorBinario.length(); i>0; i--)
   {
      valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));
   }
 
   return valor;
}

public static String BinarioHexa(String binario) 
{
	char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
	StringBuilder sb = new StringBuilder();
	int posInicial = 0;
	int posFinal = 0;
	char charEncontrado = '-';

	posInicial = binario.length();
	posFinal = posInicial;

	while (posicaoInicial > 0) 
		{
			posInicial = ((posInicial - 4) >= 0) ? posInicial - 4 : 0;
			charEncontrado = hexa[BinarioDec(binario.substring(posInicial, posFinal))];
			sb.insert(0, charEncontrado);
 
      		posFinal = posInicial;
   		}
 
   return sb.toString();
}

Eu estou tendo dificuldades em fazer esse procedimento utilizando a pilha. Eu pesquisei a respeito e aprendi a fazer a conversão Binário para Hexadecimal, mas não estou conseguindo colocar em código. Acredito que aquele método de conversão que eu estudei de outra fonte funciona como esperado, mas a parte do exercicio que solicita que o procedimento seja feito e demonstrado dentro de uma pilha que esta me dando dor de cabeça.

Agradeço pela ajuda.

Caso seja de algum valor, segue a biblioteca de pilhas que estou utilizando: http://notepad.cc/share/HO9M15VgRu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.