Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2019, 21:44
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
traduciendo números binarios en c++

Hola a todos, tengo la siguiente consulta, estoy preparando ejercicios verán he estado traduciendo un código que tengo de java a c++:

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <iterator>
  4. using namespace std;
  5.     /**
  6.      * Código de: https://codigo--java.blogspot.com.uy/2013/06/java-basico-045-funcion-conversion.html
  7.      *
  8.      * 11. Desarrolla una función que muestre en binario un número entre 0 y 255.
  9.      */
  10.     int* binario(int a);
  11.     /*--------------------*/
  12.     int main(int argc, char** argv) {
  13.         int num;
  14.         cout << "\n Ingresa un número entre 0 y 255: ";
  15.         cin >> num;
  16.         if(num < 0 || num > 255){
  17.             cout << "\n ERROR";
  18.         } else {
  19.             int* xbinario = binario(num);
  20.             cout << "\n El binario de " << num << " es: ";
  21.             for (int i = sizeof(xbinario) - 1; i >= 0; i--) {
  22.                 cout << *(xbinario + i);
  23.             }
  24.             cout << "\n";
  25.         }
  26.         return 0;
  27.     }
  28.     int* binario(int a){
  29.         static int binario[1000];        
  30.         if(a > 0 && a <= 255){
  31.             int cont = 0;
  32.             int var = a;
  33.             while (var != 0) {                
  34.                 var = var/2;
  35.                 cont ++;
  36.             }
  37.             int t = 0;
  38.             while (a != 0) {                
  39.                 binario[t] = a%2;
  40.                 a = a/2;
  41.                 t++;
  42.             }
  43.         }
  44.         return binario;        
  45.     }

El problema que tengo es que si ingreso una cantidad 255, me muestra bien los 11111111, pero si ingreso 10 me sucede esto:

Cita:
Ingresa un número entre 0 y 255: 10

El binario de 10 es: 00001010
¿cómo puedo hacer para variar la cantidad de elementos usando sizeof o otro? ya que las librerias array o vector no están permitidas para la institución que estoy preparando material.

Espero sus respuestas y saludos.
__________________
Si te interesa, visita mi perfil de Linkedin. Gracias