Ir ao conteúdo
  • Cadastre-se
Daniel Natan Schmitz

Conversão de bases em c

Recommended Posts

Boa noite pessoal, preciso criar um programa que converta bases numéricas:

  • Binário para decimal
  • Decimal para binário
  • Binário para Hexadecimal
  • Hexadecimal para binário

O usuário poderá entrar com um número de quantos digitos ele quiser.

Se souber de apenas uma, poste, pois de grão em grão a galinha enche o papo hehehe.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a sua resposta está certa ou não, ou para que possamos ajudá-lo com a sua dúvida no desenvolvimento do exercício.

 

Infelizmente, não temos como resolver seus trabalhos por você. O objetivo do Fórum do Clube do Hardware é auxiliar você a sanar suas dúvidas, e não de responde-las em seu lugar. Além disso, copiar e colar respostas que não são de sua autoria é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif Posso publicar o código que fiz, o problema é que ele converte apenas números binários de 8 bits, e preciso que ele converta quantos números o usuário quiser.

Segue minha função

int bin_to_dec(int valorint)
{
    int total = 0;
    int potenc = 1;
    while(valorint > 0) {
        total += valorint % 10 * potenc;
        valorint = valorint / 10;
        potenc = potenc * 2;
    }

    return total;
}

Obs.: Ao resolver o problema desta função as outras meio que se resolvem sozinhas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Daniel Natan Schmitz

#include <stdio.h>

void conversorBase();
void conversorGradeza();

int main()
{
	
	int opcao;
	do
	{
		system("cls");
		printf("\n\t1 - Conversor de Base Binaria/Decimal/Hexadecimal");
		//printf("\n\t2 - Conversor de Grandeza Byte/KByte/MByte/GByte/TByte");
		printf("\n\t3 - Sair");
		printf("\n\t==>");
		scanf("%i",&opcao);
		
		switch(opcao)
		{
			case 1: conversorBase();
			getch();
				break;
				
				case 2:
				break;
				
				case 3:
					break;
		}
	}while(opcao != 3);
	
	
	return 0;
}
void conversorBase()
{
	int base,d = 1,h,i=0,vetBin[50];
    int bin,dec = 0,j;
	char hex[8],Bin[50];
	do
	{
		system("cls");
		printf("\n\t1 - Binario");
		printf("\n\t2 - Decimal");
		printf("\n\t3 - HexaDecimal");
		printf("\n\t4 - Sair");
		printf("\n\t==>");
		scanf("%i",&base);
		
		switch(base)
		{
			case 1:
				printf("\nDigite Um numero na Base Binaria: ");
				scanf("%i",&bin);
					do
					{
						dec = dec+(bin%10)*d;
						d = d*2;
						bin = bin/10;
					}while(bin != 0);
					
					printf("\nO numero em decimal e: %d\n", dec);
					itoa(dec,hex,16);
					
					printf("O numero em hexadecimal e: %s\n\n", hex);
					getch();
				break;
				
				case 2:  printf("\nDigite Um numero na Base Decimal: ");
				scanf("%i",&dec);
				
				itoa(dec,Bin,2);
				printf("\nO Numero %i em Binario e: %s\n\n",dec, Bin);
				
				itoa(dec,hex,16);					
				printf("O Numero %i em hexadecimal e: %s\n\n",dec, hex);
				
				getch();
					
					case 3: 
					i = 0;
			
					printf("\nCONVERSAO DE HEXADECIMAL");
					 printf("\nDigite Um Valor na Base HexaDecimal: ");
					scanf("%x",&h);
					
					
				
					printf("\n%x em decimal e: %d\n", h, h);

					printf("\n%x Em binario e: ", h);
						
					while(h>0)
					{
						vetBin[i]= h%2;
						i++;
						h=h/2;
						
					}
					
					for(j=i-1; j>=0; j--)
					{
						printf("%d", vetBin[j]);
					}
					getch();
					break;
					
					
					case 4:
						break;						
		}
		
	 } while(base != 4);
	
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize Long Long Int ao invés de Int para a variável valorint.

Ou use vetor, fica mais fácil e há mais possibilidades.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, estou tentando criar um programa que converta valores binários em C, cheguei no seguinte código:

#include <stdio.h>

int bin_to_dec(int bin)
{
    int dec=0, d=1;
	do{
        dec = dec+(bin%10)*d;
		d = d*2;
		bin = bin/10;
	}while(bin != 0);

	return dec;
}
int main(){
	
	int bin=0, resultado=0;
	printf("Digite um binario a ser convertido para decimal\n");
	scanf("%d", &bin);
	
	resultado = bin_to_dec(bin);
	
	printf("O valor convertido é: %d\n", resultado);
	return 0;
}

O problema é que ele só converte se o binários tiver no máximo 10 dígitos. Preciso que ele converta um binário de quantos dígitos o usuário quiser.

 

Se alguém puder me ajudar fico muito agardecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Xandrules Estou usando, continua apresentando um número negativo.... 

Exemplo: se tento converter 111111111111 deveria aparecer 4095, ao invés disso o programa está retornando: -2585.

#include <stdio.h>

int bin_to_dec(int bin)
{
    long int dec=0, d=1;
	do{
        dec = dec+(bin%10)*d;
		d = d*2;
		bin = bin/10;
	}while(bin != 0);

	return dec;
}
int main(){
	
	long int bin=0, resultado=0;
	printf("Digite um binario a ser convertido para decimal\n");
	scanf("%li", &bin);
	
	resultado = bin_to_dec(bin);
	
	printf("O valor convertido é: %li\n", resultado);
	return 0;
}

Este é o código utilizando long int

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Xandrules Use um vetor então. Isso deixa praticamente com tamanho infinito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 21/06/2016 às 20:53, MassakiMsk disse:

@Xandrules Use um vetor então. Isso deixa praticamente com tamanho infinito

@Daniel Natan Schmitz hum entendi o problema eu acho que esta na precisao por se tratar de um numero grande para uma entrada

vou pesquisar e vejo o que consigo..

 

@MassakiMsk o Problema e eu teria ou que concatenar ou o problema seria o mesmo pois arrays tem o mesmo tamanho do tipo. ou converter por partes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×