Buenas, tengo un programa que pasa de decimal (solo números positivos) a binario, pero no entiendo muy bien como hace la conversión, este es el código:
#include <stdio.h>
int leeNumero();
void decBin(int n);
int main()
{
int n;
n = leeNumero();
decBin(n);
printf("\n);
return 0;
}
int leeNumero()
{
int numero;
do
{
printf("Introduzca un número no negativo: ");
scanf("%d", &numero);
}
while (numero<0);
return numero;
}
void decBin(int n)
{
if (n == 0)
printf("0");
else if (n == 1)
printf("1");
else
{
decBin(n / 2);
printf("%d", n % 2);
}
}
Yo el programa lo entiendo de esta manera:
Declaramos las funciones leeNumero y decBin, entramos en la función main, a través de la función leeNumero se comprueba que el número no sea negativo, volvemos a la función main y entramos en la función decBin, y es ahí donde me surge la duda, ya que no entiendo muy bien como hace la conversión a binario :S
¿Alguna ayuda?, gracias de antemano!
P.D: El programa funciona perfectamente
Por el nombre de la función se puede intuir más o menos lo que va a hacer.
Citarif (n == 0)
printf("0");
Si el número introducido es 0, imprime 0. Pues 0 en binario es 0.
Citarelse if (n == 1)
printf("1");
Lo mismo con el 1.
Citarelse
{
decBin(n / 2);
printf("%d", n % 2);
}
Para el resto de números se pasa de decimal a binario mediante una función recursiva que se dedica a dividir el número entre 2 (Procedimiento para pasar de decimal a binario http://recursostic.educacion.es/secundaria/edad/4esotecnologia/quincena5/4q2_contenidos_2c.htm ).
Y eso es todo.
Un saludo!
Cita de: Almapa en 18 Diciembre 2013, 12:02 PM
Por el nombre de la función se puede intuir más o menos lo que va a hacer.
Si el número introducido es 0, imprime 0. Pues 0 en binario es 0.
Lo mismo con el 1.
Para el resto de números se pasa de decimal a binario mediante una función recursiva que se dedica a dividir el número entre 2 (Procedimiento para pasar de decimal a binario http://recursostic.educacion.es/secundaria/edad/4esotecnologia/quincena5/4q2_contenidos_2c.htm ).
Y eso es todo.
Un saludo!
Muchas gracias, no me había mirado el tema de funciones recursivas y por eso no caía xD