SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: BajoMx en Miércoles 19 de Mayo de 2004, 07:48

Título: Decimal A Binario
Publicado por: BajoMx en Miércoles 19 de Mayo de 2004, 07:48
Bueno, tengo el codigo que presento a continuacion, es para generar numeros y me los da en decimal, y luego los cambio a binario, pero lo que quiero es que me los haga de la misma longitud, o no se como decirlo, pero por ejemplo:

No. Decimales:  
10
7
3

Me aparece:
1010
111
11

Yo quiero que me aparesca:
1010
0111
0011

es decir que me llene con ceros a la izq para que queden del mismo ancho por asi decirlo
mi codigo es:

#include<iostream.h>
#include<conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main(void)
   {
   int i,P,RM,Rm,EG,b,bin;
   clrscr();
   P=10;//Numero de Poblacion
   Rm=1;//Rango Menor del Intervalo
   RM=20;//Rango Mayor del Intervalo
   srand(time(NULL));
   cout<< "50 ELEMENTOS DE LA POBLACION\nRANGO 1 - 20\n\n";
   //Generacon de Poblacion Aleatoriamente
   for(i=0; i<P; i++)
   {
   cout<<"\n";
   (EG=rand()%(RM-Rm+1)+Rm);
   //Convercion de Decimal a Binarios
   for (b=EG; b!=0; b=b/2)
   {
   bin=b%2;
   cout<<(bin);
   }
   getch();
   }
}

espero me puedan ayudar
Título: Re: Decimal A Binario
Publicado por: Kev en Miércoles 19 de Mayo de 2004, 16:57
Humm..., porque no intentas manejar el resultado, lo pasas a una cadena, ahi comparas cuentas los caracteres y si falta rellenas con ceros, por ultimo pasas la cadena y lo vuelves a convertir a valor numerico (si lo necesitas, porque puedes mostrar directamente la cadena)

Salu2
Título: Re: Decimal A Binario
Publicado por: BajoMx en Miércoles 19 de Mayo de 2004, 23:49
me podrias decir como hacer eso?
soy sumamente principiante en esto :s

gracias :)
Título: Re: Decimal A Binario
Publicado por: turing en Jueves 20 de Mayo de 2004, 01:30
Hola BajoMX:

Si lo que quieres es simplemente mostrar por pantalla los valores con longitud fija lo puedes hacer así:

for (int i = 3; i >= 0; i--)
if (bin & (1<<i))
cout << 1;
else
cout << 0;

cout << endl;

Esta expresión te mostrará cuatro dígitos (el valor de los 4 bits de menor peso).
Date cuenta de que si bin toma en algún momento el valor 16 (quinto bit, de peso 4) mostraría cuatro ceros ;) , por ejemplo.
Título: Re: Decimal A Binario
Publicado por: BajoMx en Viernes 21 de Mayo de 2004, 00:22
Ya arregle mi programa (genera numeros aleatoriamente, dentro de un rango, y los convierte a binario) y el codigo quedo de esta manera:

#include<iostream.h>
#include<conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main(void)
   {
   int i,j;       //Incrementos
   int P=5;       //Numero de Poblacion
   int Rm=1;      //Rango Menor del Intervalo
   int RM=10;     //Rango Mayor del Intervalo
   int EG;        //Elemento Generado Aleatoriamente
   int TamC=14;   //Tama¤o del Cromosom
   int res;       //Residuos
   int cromo[15]; //Vector para num. en binario
   clrscr();
   srand(time(NULL));
   cout<< "50 ELEMENTOS DE LA POBLACION\nRANGO 1.000 - 2.000\n\n";
   //Generacon de Poblacion Aleatoriamente
   for(i=0; i<P; i++)
     {
     cout<<"\n";
     (EG=rand()%(RM-Rm+1)+Rm);
   //Convercion de Decimal a Binarios
     for(j=0; j<TamC ;j++)
       {
       res=EG%2;
       cromo[TamC-(j+1)]=res;
       }
     cout<< cromo;
     getch();
     }
}


El problema esta que en la salida en ves de mostrarme 0s y 1s me da como resultado algo asi:

0x8f80ffcc
0x8f80ffcc
0x8f80ffcc
0x8f80ffcc
0x8f80ffcc


espero alguien me pueda ayuda :s
BajoMx!
Título: Re: Decimal A Binario
Publicado por: chato_oros en Lunes 24 de Mayo de 2004, 03:11
mira este programa para transformar de decimal a binario, ojala t de una idea d como arreglar tu problema, espero este bien.

 :comp:
Título: Re: Decimal A Binario
Publicado por: BajoMx en Lunes 24 de Mayo de 2004, 15:00
Gracias Chato_Oros ya con tu ayuda pude terminar mi codigo :)
 :kicking: