/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda codigo decimal a binario

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
m@o_614



Registrado: 13 Dic 2011
Mensajes: 20

MensajePublicado: 13/12/2011 10:15 am
Título: Ayuda codigo decimal a binario

Alguien que me diga cual es mi error en este programa? compila bien pero a la hora de ingresar un numero como el 2 o el 12, me sale 1 y 11 en vez de 10 y 1100, creo que en la funcion binario se esta comiendo los ceros pero no se por que??

int invertir(int acum)
{
int mod,inverso=0;
while(acum>0)
{
mod=acum%10;
inverso=inverso*10+mod;
acum/=10;
}
printf("%d\n",inverso);
return inverso;
}

int binario(int num)
{
int i,res,acum=0;
for(i=num;num>0;num/=2)
{
res=num%2;
acum=acum*10+res;
}
return(acum);
}

int main()
{
int num,acum,inverso;
printf("Bits en la RAM\n\n");
printf("Dame un valor entero: ");
scanf("%d",&num);
if(num>0)
{
acum=binario(num);
inverso=invertir(acum);
}
return 0;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7517
Ubicación: Mexico

MensajePublicado: 13/12/2011 5:29 pm
Título:

Como indicas el problema se evidencia en esa función donde un valor como 12 resulta en 11.

Soluciones hay varias: utilizar un array para almacenar ahí cada dígito binario o modificar la función para que sea recursiva devolviendo el numero con los bits en el orden correcto.

Un ejemplo de la segunda opción (C estándar):
Código:
#include <stdio.h>
#include <stdlib.h>

int binario(int num);

int main(void)
{
   int numero;
   
   printf("Indica el numero: ");
   if (scanf("%d", &numero) != 1 || numero < 0)
      return EXIT_FAILURE;
   
   printf("%d (base 10) == %d (base 2)\n", numero, binario(numero));
   
   return EXIT_SUCCESS;
}

int binario(int num)
{
   int digito = num % 2;
   int resto = num / 2;
   
   return resto > 0 ? binario(resto) * 10 + digito : digito;
}


Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
m@o_614



Registrado: 13 Dic 2011
Mensajes: 20

MensajePublicado: 14/12/2011 5:26 pm
Título:

gracias me sirvio de mucho el codigo
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com