Código:
#include <stdio.h>
#include <string.h>
#include <math.h>
void decimaltobinary(int valor);
void binarytodecimal();
int main()
{
int i=0,choice=0,valor;
do
{
printf("====================================\n");
printf("------------------------------------\n");
printf("Deseja converter ?\n");
printf("Digite 1 para DECIMAL para BINARIO\n");
printf("Digite 2 para BINARIO para DECIMAL\n");
printf("====================================\n");
printf("------------------------------------\n");
scanf("%d",&choice);
if(choice == 1 || choice == 2)
{
i=1;
switch(choice)
{
case 1:
decimaltobinary(valor);
break;
case 2:
binarytodecimal();
break;
}
}
else
{
printf("ESCOLHA INVALIDA FILHA DA PUTA \n");
}
}while(i==0);
}
void binarytodecimal()
{
int i,j,tam=0;
int dec[50];
int soma,s;
char va[50];
printf("Digite um binario: ");
fflush(stdin);
gets(va);
tam=strlen(va);
for(i=0; i<tam; i++)//CONVERSOR DE CHAR PARA INT.
{
dec[i]=va[i]-48;
}
j=1;
int k;
k=0;
if(dec[tam-1]==0)
{
soma=0;
}
if(dec[tam-1]==1)
{
soma=1;
}
for(i=tam-2; i>=0; i--)
{
if(dec[i]==1)
{
s=(dec[i])*(j*2);
soma+=s;
j=j*2;
}
else if(dec[i]==0)
{
j=j*2;
}
}
printf("Binario convertido para decimal: %d",soma);
}
void decimaltobinary(int valor)
{
int i,j, resto[10],result[10];
printf("digite um valor decimal: ");
scanf("%d",&valor);
for(i=0;i<10;i++) // COMEÇO DA GAMBIARRA.
{
resto[i]=3;
}
i=0;
for(;;)
{
if(valor==0) // CHEGOU NO FIM DA DIVISAO = PARA DE DIVIDIR.
{
break;
}
else
{
resto[i]=valor%2; // CATA O RESTO POR 2.
valor=valor/2; // TU JA DEVE SABER O Q ISSO FAZ NE
i++;
}
}
for(i=9; i>=0; i--) // IMPRIME O CONTRARIO '-', BINARY SUCESFULL.
{
if(resto[i]!=3)
{
printf("%d",resto[i]);
}
}
}