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:
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.
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 (cpp) [Seleccionar]
while(n != 0){
int m = n%2;
n = n/2;
n_bin[count]=m;
for(int i=7;i!=0;i--){ // Corrige el i=8 por i=7
cout << n_bin[i];
}
count++; // Mejor aquí
}
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 (cpp) [Seleccionar]
while(n != 0){
int m = n%2;
n = n/2;
n_bin[count]=m;
count++; // Mejor aquí
}
for(int i=7;i!=0;i--){ // Corrige el i=8 por i=7
cout << n_bin[i];
}