Hola. No entiendo muy bien la pregunta, puesto que el programa parece funcionar bien.
Si te refieres a que no muestre ceros a la izquierda, te muestro una adaptación a tu código que ofrece eso:
Código C++:
Ver original#include <iostream>
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 num_decimal);
/*--------------------*/
int main(int argc, char** argv)
{
int num;
cout << "\nIngresa un número entre 0 y 255: ";
cin >> num;
if(num < 0 || num > 255)
{
cout << "\n ERROR";
}
else
{
cout << "\nEl binario de " << num << " es "<<binario(num);
}
return 0;
}
int binario(int num_decimal)
{
int resto, divisor = 2;
int dividendo = num_decimal;
int resultado=0;
int multiplicador = 1;
while(dividendo >= divisor) //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
{
resto = dividendo % 2;
if(resto == 1)
{
resultado = resultado + multiplicador;
}
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
multiplicador*=10;
}
if (dividendo == 1)
{
resultado = resultado + multiplicador;
}
return resultado;
}
(algortimo sacado de
aquí)