Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jamatbar en 18 Diciembre 2013, 11:46 am



Título: ¿Alguien me puede explicar este programa en C? (Dec-Binario)
Publicado por: jamatbar en 18 Diciembre 2013, 11:46 am
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:

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


Título: Re: ¿Alguien me puede explicar este programa en C? (Dec-Binario)
Publicado por: 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.

Citar
if (n == 0)
        printf("0");

Si el número introducido es 0, imprime 0. Pues 0 en binario es 0.

Citar
else if (n == 1)
        printf("1");

Lo mismo con el 1.

Citar
else
        {
           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!


Título: Re: ¿Alguien me puede explicar este programa en C? (Dec-Binario)
Publicado por: jamatbar en 18 Diciembre 2013, 12:18 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