Curso de Programación en C/Prog130
Ir a la navegación
Ir a la búsqueda
Prog130
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void itobs( int, char * );
void Muestra_bstr( const char * );
int main( void )
{
char Bin_str[8 * sizeof(int) + 1],
Buf[12];
int i,
Numero;
puts( "\n\t\tDecimal a Binario Convertidor" );
printf( "\nDame un número positivo entre 0 y 99999999: " );
while( fgets( Buf, 10, stdin ) && Buf[0] != '\n' )
{
if( *(Buf + strlen( Buf ) -1 ) != '\n' )
{
fputs( "La línea que entraste es demaciado largo.\nSolo 10 chars MAX",
stderr );
exit(1);
}
*(Buf + strlen( Buf ) -1 ) = '\0';
for( i = 0; i < strlen( Buf ); i++ )
{
if( Buf[i] < '0' || Buf[i] > '9' )
{
fputs( "Caracteres ilegales en su ingreso\n", stderr );
exit(1);
}
}
Numero = atoi( Buf);
if( Numero > 99999999 )
{
fputs( "Su entrada está fuera del rango especificado\n", stderr );
exit(1);
}
itobs( Numero, Bin_str );
printf( "%d is ", Numero );
Muestra_bstr( Bin_str );
putchar( '\n' );
printf( "\nDame un número positivo entre 0 y 99999999"
" (<Enter> para terminar): " );
}
puts( "¡Adios!\n" );
return 0;
}
void itobs( int n, char * ps )
{
int i;
int size = 8 * sizeof(int);
for( i = size - 1; i >= 0; i--, n >>= 1 )
ps[i] = ( 1 & n ) + '0';
ps[size] = '\0';
}
void Muestra_bstr( const char * str )
{
int i = 0;
putchar( '\t' );
while( str[i] )
{
putchar( str[i] );
if( ++i % 4 == 0 && str[i] )
putchar( ' ' );
}
}
Resultado
[rrc@AbelLap CClase]$ vi Prog130.c [rrc@AbelLap CClase]$ gcc -Wall -o Prog130 Prog130.c [rrc@AbelLap CClase]$ ./Prog130 Decimal a Binario Convertidor Dame un número positivo entre 0 y 99999999: 99999999 99999999 is 0000 0101 1111 0101 1110 0000 1111 1111 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 2 2 is 0000 0000 0000 0000 0000 0000 0000 0010 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 4 4 is 0000 0000 0000 0000 0000 0000 0000 0100 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 8 8 is 0000 0000 0000 0000 0000 0000 0000 1000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 32 32 is 0000 0000 0000 0000 0000 0000 0010 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 64 64 is 0000 0000 0000 0000 0000 0000 0100 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 128 128 is 0000 0000 0000 0000 0000 0000 1000 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 256 256 is 0000 0000 0000 0000 0000 0001 0000 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 1024 1024 is 0000 0000 0000 0000 0000 0100 0000 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): 65536 65536 is 0000 0000 0000 0001 0000 0000 0000 0000 Dame un número positivo entre 0 y 99999999 (<Enter> para terminar): ¡Adios!