Curso de Programación en C/Prog130
< Curso de Programación en C
Ir a la navegación
Ir a la búsqueda
Revisión del 11:15 29 oct 2012 de Rrc (discusión | contribuciones)
Prog130
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4
5 void itobs( int, char * );
6 void Muestra_bstr( const char * );
7
8 int main( void )
9 {
10 char Bin_str[8 * sizeof(int) + 1],
11 Buf[12];
12
13 int i,
14 Numero;
15
16 puts( "\n\t\tDecimal a Binario Convertidor" );
17 printf( "\nDame un número positivo entre 0 y 99999999: " );
18
19 while( fgets( Buf, 10, stdin ) && Buf[0] != '\n' )
20 {
21 if( *(Buf + strlen( Buf ) -1 ) != '\n' )
22 {
23 fputs( "La línea que entraste es demaciado largo.\nSolo 10 chars MAX",
24 stderr );
25 exit(1);
26 }
27 *(Buf + strlen( Buf ) -1 ) = '\0';
28
29 for( i = 0; i < strlen( Buf ); i++ )
30 {
31 if( Buf[i] < '0' || Buf[i] > '9' )
32 {
33 fputs( "Caracteres ilegales en su ingreso\n", stderr );
34 exit(1);
35 }
36 }
37
38 Numero = atoi( Buf);
39 if( Numero > 99999999 )
40 {
41 fputs( "Su entrada está fuera del rango especificado\n", stderr );
42 exit(1);
43 }
44
45 itobs( Numero, Bin_str );
46 printf( "%d is ", Numero );
47 Muestra_bstr( Bin_str );
48 putchar( '\n' );
49 printf( "\nDame un número positivo entre 0 y 99999999"
50 " (<Enter> para terminar): " );
51 }
52 puts( "¡Adios!\n" );
53 return 0;
54 }
55
56 void itobs( int n, char * ps )
57 {
58 int i;
59
60 int size = 8 * sizeof(int);
61
62 for( i = size - 1; i >= 0; i--, n >>= 1 )
63 ps[i] = ( 1 & n ) + '0';
64 ps[size] = '\0';
65 }
66
67 void Muestra_bstr( const char * str )
68 {
69 int i = 0;
70
71 putchar( '\t' );
72 while( str[i] )
73 {
74 putchar( str[i] );
75 if( ++i % 4 == 0 && str[i] )
76 putchar( ' ' );
77 }
78 }
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!