Conversor de decimal para binario,

Iniciado por Diego_Rocha, 03 de Março de 2007, 23:55

tópico anterior - próximo tópico

Diego_Rocha

E ai pessoal, hoje estava brincando com o c, ( não tinha nada para fazer ) ai decidi fazer um programinha que converte um numero decimal para binario e não é que consegui, XD, ele ainda esta bem feio e so aceita ate o numero 63 mais que isso da erro, mas ja é um começo por isso vou postar ele aqui gostaria de saber se tem uma forma melhor de fazer isso usando por exemplo um função de loop ou coisas assim, porfavor não me venha disser que ja existe um programa que converte ou coisa do genero porque o que me interresa é eu aprender a fazer ok, ele é bem simples tem mais matematica do que codigo, porem acho que podia ser implementada algumas funções para deixar o codigo mais enxuto;


#include <stdio.h>
int main()
{
int num, num_a, num_b, num_c, num_d, num_e, num_f;
printf("\nDigite um numero --> ");
scanf("%d",&num);
if ( num <= 15 )
{
num_a = num % 2;
num_b = num / 2 % 2;
num_c = num / 2 / 2 % 2;
num_d = num / 2 / 2 / 2 % 2;
printf("Seu numero em binario é %d%d%d%d\n", num_d, num_c, num_b, num_a);
}
else if ( num > 15 && num <= 31 )
{
num_a = num % 2;
num_b = num / 2 % 2;
num_c = num / 2 / 2 % 2;
num_d = num / 2 / 2 / 2 % 2;
num_e = num / 2 / 2 / 2 / 2 % 2;
printf("Seu numero em binario é %d%d%d%d%d\n", num_e, num_d, num_c, num_b, num_a);
}
else if ( num > 31 && num <= 63 )
{
num_a = num % 2;
num_b = num / 2 % 2;
num_c = num / 2 / 2 % 2;
num_d = num / 2 / 2 / 2 % 2;
num_e = num / 2 / 2 / 2 / 2 % 2;
num_f = num / 2 / 2 / 2 / 2 / 2 % 2;
printf("Seu numero em binario é %d%d%d%d%d%d\n", num_f, num_e, num_d, num_c, num_b, num_a);
}
else
{
printf("Numero invalido so é permitido numeros de 0 a 63\n");
}
return 0;
}


é isso espero que possam me ajudar porque tenho muita vontade de aprender realmente a programar em c, e antes que eu me esqueça eu tbm fiz um que faz o contrario desse converte um binario para decimal ate porque eu tinha que testar para ver se esse programa realmente funciona  ;D t++

solanoalves

#1
Fiz um programinha que o limite para binario eh grande.....soh tem 1 problema..nao fiz uma função para inverter a string já que deve-se ler da ultima string para a primeira o numero binario...

mas ta ae...o resto vc consegue fazer na boa


#include <stdio.h>
#include <stdlib.h>

void converte (int numero)
{   
   int resto,i=0,a=0,contador=0;
   int binario[100];
   
     do
     {
     resto = numero%2;
     binario[i] = resto;
     numero = numero/2;
     i++;
     contador++;
     }while( numero != 0 && i<100);
     for(i=0;i<contador;i++)
     {
      printf("\nBinario : %d",binario[i]);
     }
}

int main()
{
  int nm;
  printf("digite um numero : ");
  scanf("%d",&nm);
  converte(nm);
  printf("\nleia de baixo pra cima\n");
  return 0;
}

Diego_Rocha

Ai cara muit obrigado pelo exemplo so tem um problema ele imprimi ao contrario o numero XD, como voce mesmo disse eu testei ele aqui e realmente converte para binario, agora so ta faltando mesmo resolve esse probleminha valeu pelo exemplo era exatamente o que buscava XD

Lamego

Cria um array de inteiros, em vez de imprimir coloca o resultado nessa array.
No fim mostra os valores na array navegando da cauda para a cabeça.
João Luís Marques Pinto
Mais programs e jogos para o Ubuntu

Diego_Rocha

E ai eu sei q esse topico ja ta morto mais, estava revendo a sessão programação aqui do forum e para praticar tentei solucionar o exemplo e consegui de maneira quase q instantanea, XD, tbm apos fazer o programinha de grafico q ja postei aqui peguei uma certa intimidade com o for XD, pode ser q esteja errado pq so inverti a forma de imprimir por isso vou postar a solução que achei e assim voces me falam qual seria o metodo recomendado ok, aqui vai


#include <stdio.h>
#include <stdlib.h>

void converte (int numero)
{   
int resto,i=0,a=0,contador=0;
int binario[100];
   
do
{
resto = numero%2;
binario[i] = resto;
numero = numero/2;
i++;
contador++;
}while( numero != 0 && i<100);
printf("\nBinario : ");
for(i=contador;i>=0;i--)
{
if ( i == contador )
{
}else{
printf("%d",binario[i]);
}
}
printf("\n\n");
}

int main()
{
int nm;
printf("\ndigite um numero : ");
scanf("%d",&nm);
converte(nm);
return 0;
}


decidi colocar o codigo inteiro novamente so para ficar mais facil de entender, apesar de so ter feito modificações no for, é isso ai t++