Título: Decimal a binario Publicado por: Zeit en 19 Marzo 2016, 16:38 pm Buenos días, tardes y noches tengan todos, tengo un pequeño problemilla, pasa que estoy aprendiendo c++ y por practica estoy desarrollando un conversor de decimal a binario, todo bien, el conversor funciona a la hora de pasar un numero de binario a decimal, solo que no lo reordena.
Por ejemplo, le doy 4 como valor principal y me devuelve 001, lo cual esta "bien" por que el valor binario de 4 es 100, lo que tengo es que reordenar los valores, para ordenarlo intento hacer un array pero tienen comportamientos demasiado caoticos, por ejemplo, me imprime direcciones de memoria, me imprime numeros que para mi son aleatorios y así, este es el codigo que tengo: Código: #include <iostream> P.S: Lo he intentado de otros modos y me sale el binario pero con un monton de 0's y 1's y no le veo el sentido, este es el otro codigo que he intentado usar: Código: #include <iostream> Y mi ultima aberración (esta es la que imprime la direccion de la memoria): Código: #include <iostream> En: Código: cout << n_bin Código: cout << *n_bin Si alguien pudiera hecharme una mano le agradecería mucho. ^^ Título: Re: Decimal a binario Publicado por: class_OpenGL en 19 Marzo 2016, 17:28 pm Primero, en el ciclo for donde muestras el contenido del arreglo estás accediendo a memoria fuera del arreglo. Un arreglo tiene los índices 0, 1, 2, ... hasta el tamaño que le hayas asignado - 1. Entonces, en el for estás accediendo al elemento '8' del arreglo, mientras que al elemento máximo que puedes acceder es al 7 (8 - 1).
Segundo, estás incrementando el count antes de tiempo. Esto lo digo porque nunca inicializas m_bin[0] (ya dijimos que accedemos al arreglo desde el elemento 0), pero sin embargo estás accediendo a m_bin[1], m_bin[2], ... Nunca llegas a cambiar el valor de m_bin[0]. Tercero, el for lo tienes que mostrar fuera del bucle while, porque si muestras el contenido del arreglo sin inicializar, lo que muestras es basura. Esa "basura" es memoria que antes había sido ocupada por otros programas/procesos. Por ejemplo, fijémonos en tu código: Código
Si te fijas bien, ¿le has dado un valor a n_bin[7] inicialmente? No, porque inicialmente solo inicializas n_bin[0], pero no inicializas n_bin[1], etc... Entonces, tendrías que sacar el for fuera. Así, primero convertirías el valor a binario y luego mostrarías los resultados. Código
Título: Re: Decimal a binario Publicado por: Zeit en 19 Marzo 2016, 18:17 pm Gracias, he intentado tu solucion y luego de retocar el codigo un par de miles de veces :xD ya me sale el codigo pseudo-ordenado, solo tuve algunos errores, por ejemplo al crear un arreglo de 7 digitos me saltaba violacion del segmento, pero lo solucione volviendo a colocar 8, cambie el ciclo while por un for, simplifique un poco el codigo y hize un contador decreciente pero ahora en vez de dar 00000100 me da 100000010, el codigo es...
Código
Título: Re: Decimal a binario Publicado por: Zeit en 19 Marzo 2016, 23:20 pm Ya esta solucionado, al final el error estaba en un operador, el codigo funcional:
Código ¡Muchas gracias! :D |