Ir ao conteúdo
  • Cadastre-se

Conversão de bases em c


Posts recomendados

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!

Link para o comentário
Compartilhar em outros sites

  • Moderador

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

Link para o comentário
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
Link para o comentário
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
Link para o comentário
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.

Link para o comentário
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

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!