programa convierte de decimal a binario

glas
11 de Agosto del 2009
Hola amigos aqui les dejo un programa simple de conversion de decimal a binario, si alguien puede hacer este mismo codigo mas reducido me dicen como, chao.

#include<stdio.h>
main()
{
int c=0,n=0,r=0,p=0;
char valor_d[20], bin[80];
void invertir(char valor[80]);//funcion invierte cadena
printf("n=====Digite un valor en decimal=====n");
gets(valor_d);
while(valor_d[c]!='')
{ n=n*10+(valor_d[c]-'0'); c++; }
while(n>=1)
{
r=n%2;
n=n/2;
if(r==1) { bin[p]='1'; p++; }
if(r==0) { bin[p]='0'; p++; }
}
printf("n");
invertir(bin);
getchar();
return 0;
}//-------------------------------------------------------------
void invertir(char valor[80])
{
int c=0; char i;
while(valor[c]!='') { c++; } //cantidad de caracteres
printf(" b");
while(c>=0)
{ printf("%c",i=valor[c]); c--; }
}

god2710
11 de Agosto del 2009
No se si conoces la recursividad pero es la unica forma que encuentro de achicarlo, funciona perfecto..

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

void cambiar_binario(int num_dec);

int main()
{
int num_dec;
printf ("Digite el valor decimaln-->");
scanf("%d", &num_dec);
cambiar_binario(num_dec);
printf ("n");
system ("PAUSE");
return 0;
}

void cambiar_binario(int num_dec)
{
if (!(num_dec/2)) {
printf ("%d", num_dec%2);
return;
}
else {
cambiar_binario(num_dec/2);
printf ("%d", num_dec%2);
}
}