Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: pablo256 en 6 Abril 2015, 23:39 PM

Título: No sé por qué no funciona (conversor decimal-binario)
Publicado por: pablo256 en 6 Abril 2015, 23:39 PM
Muy buenas a todos/as! Haciendo el ejercicio 102 de C (aunque en C++, que es lo que estoy aprendiendo), se me ocurrió utilizar una función recursiva que fuera escribiendo los valores en un array desde el índice 0 hasta el índice x, pero no sé por qué no funciona (al final con un par de bucles for escribo los datos y los muestro en pantalla). Si alguien pudiera decirme en qué falla la función le estaría muy agradecido  :D

Aquí está:

        void convbin( int num, int index ){
        if ( num <= 2 ){
              bin[index + 1] = num%2;
             }
        else {
              convbin (num/2, 0);
             }
        }


Saludos!
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: ivancea96 en 7 Abril 2015, 10:24 AM
No me fijé mucho pero en la llamada recursiva, siempre envías index=0.
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: pablo256 en 7 Abril 2015, 13:04 PM
Muchas gracias por tu respuesta, voy a ver si llego a alguna solución jajajalo dejaba en 0 porque no quería que aumentara el valor hasta llegar al if, pero tienes razón, así como está siempre va a ser 1 aún después de llegar al if.
Saludos!
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: ivancea96 en 7 Abril 2015, 13:49 PM
Por si te interesa, modifiqué un poco el código para que quede funcional. Eso sí, el array queda invertido.

Spoiler

void convbin( int num, int index ){
    if ( num > 0 ){
        bin[index] = num%2;
        convbin (num/2, index+1);
    }
}
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: pablo256 en 7 Abril 2015, 16:03 PM
Muchas gracias! Lo que no entiendo es a qué te refieres con que queda invertido, en principio el primer módulo (el que estaría a la izquierda) lo escribe en la posición
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: ivancea96 en 7 Abril 2015, 17:32 PM
Invertido me refería a que si leemos del 0 al X el array, queda "01011", cuando el orden de lectura normal es "11010". pero bueno, era solo un dato xD
Título: Re: No sé por qué no funciona (conversor decimal-binario)
Publicado por: pablo256 en 13 Abril 2015, 10:05 AM
Aaah, pero así queda con un bucle también, luego se imprime desde el último índice escrito y ya está  :D