SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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
-
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
-
me podrias decir como hacer eso?
soy sumamente principiante en esto :s
gracias :)
-
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.
-
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!
-
mira este programa para transformar de decimal a binario, ojala t de una idea d como arreglar tu problema, espero este bien.
:comp:
-
Gracias Chato_Oros ya con tu ayuda pude terminar mi codigo :)
:kicking: