Les dejo un código que hice, pasa un binario a decimal :D
Saludos!
#include <iostream>
using std::cin;
using std::endl;
using std::cout;
#include <cmath>
using std::pow;
int main()
{
long int binario;
long int decimal=0;
long int auxBinario;
int resto;
bool respuesta= true;
cout <<"Binario: ";
cin >> binario;
auxBinario= binario;
for (int contador=0; pow(10.,contador) < binario; contador++)
{
resto= auxBinario % 10;
auxBinario/= 10;
switch (resto)
{
case 0:
decimal+= (resto * pow(2.0,contador));
break;
case 1:
decimal+= (resto * pow(2.0,contador));
break;
default:
respuesta= false;
break;
}
}
if (respuesta == true)
{
cout <<"\nEl binario " <<binario <<" es " <<decimal <<endl;
}
else
{
cout <<"\nEl numero ingresado no es un binario!\n";
}
cin.get();
cin.get();
return 0;
}
Creo que allí podrías hacer el código mucho mas eficiente ahí...
Una de las cosas buenas es cambiar for por while((contador=contador/10)!=0)