Cita:
Iniciado por jhonny6721 Usa cadena de texto como numero binario
Usa cadenas de texto, asi podrás aceptar mas numeros de lo normal, asi será mas robusta tu funcion.
Espero haber ayudado.
El número de dígitos a aceptar está limitado por el número en decimal al que corresponda, de ahí el uso que hago de unsigned long long. Conste que la limitación de ocho dígitos es porque así lo pedía el autor del tema.
Aprovecho para corregir el anterior post, donde me falto un digitos=1:
Código C++:
Ver original#include <stdio.h>
int main(void){
int i,digitos;
unsigned long long int numero,N,num=0;
printf("Introduzca un numero binario de ocho digitos maximo:\n"); do{
digitos=1;
for (i=10;(numero/i)>0;i*=10){
digitos++;
}
if (digitos>=9){
puts("He dicho ocho digitos maximo"); printf("Introduzca un numero binario de ocho digitos maximo:\n"); }
}while (digitos>=9);
num=0,N=numero;
for (i=1;N>0;i*=2){
num+=i*(N%10);
N/=10;
}
return 0;
}
Y de paso aporto una posible solución con cadenas:
Código C++:
Ver original#include <stdio.h>
int main(void){
int i,j,digitos=0;
unsigned long long int num=0;
char numero[65];
printf("Introduzca un numero binario de ocho digitos maximo:\n"); do{
digitos=0;
for (i=0;numero[i];i++)
digitos++;
if (digitos>=9){
puts("He dicho ocho digitos maximo"); printf("Introduzca un numero binario de ocho digitos maximo:\n"); }
}while (digitos>=9);
for (j=digitos-1,i=1;j>=0;i*=2,j--){
num+=i*(numero[j]-'0');
}
return 0;
}
¡¡¡Saluditos!!!