elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Alguien me puede explicar este programa en C? (Dec-Binario)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Alguien me puede explicar este programa en C? (Dec-Binario)  (Leído 2,229 veces)
jamatbar

Desconectado Desconectado

Mensajes: 101


Ver Perfil
¿Alguien me puede explicar este programa en C? (Dec-Binario)
« 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


« Última modificación: 18 Diciembre 2013, 12:01 pm por jamatbar » En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: ¿Alguien me puede explicar este programa en C? (Dec-Binario)
« Respuesta #1 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!


En línea

jamatbar

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Re: ¿Alguien me puede explicar este programa en C? (Dec-Binario)
« Respuesta #2 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines