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#include <cstdlib>
#include <iostream>
#include <iterator>
using namespace std;
/**
* Código de: https://codigo--java.blogspot.com.uy/2013/06/java-basico-045-funcion-conversion.html
*
* 11. Desarrolla una función que muestre en binario un número entre 0 y 255.
*/
int* binario(int a);
/*--------------------*/
int main(int argc, char** argv) {
int num;
cout << "\n Ingresa un número entre 0 y 255: ";
cin >> num;
if(num < 0 || num > 255){
cout << "\n ERROR";
} else {
int* xbinario = binario(num);
cout << "\n El binario de " << num << " es: ";
for (int i = sizeof(xbinario) - 1; i >= 0; i--) {
cout << *(xbinario + i);
}
cout << "\n";
}
return 0;
}
int* binario(int a){
static int binario[1000];
if(a > 0 && a <= 255){
int cont = 0;
int var = a;
while (var != 0) {
var = var/2;
cont ++;
}
int t = 0;
while (a != 0) {
binario[t] = a%2;
a = a/2;
t++;
}
}
return binario;
}
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.