[C con Clase] Ayuda!

Steven Davidson srd4121 en njit.edu
Mar Nov 23 02:41:58 CET 2010


Hola Fernando,

2010/11/21 Fernando Guevara <fosi7007 en hotmail.com>

>  *Nececito ayuda, he leido muchos foros, y como para muchos ejercicios he
> buscado ayuda en las paginas de c con clase pero no he encontrado un tema de
> secuencias, y ahora tengo ejercicios sobre secuecias, y estoy batallando con
> los otros, pero pienso que si me ayudan con este los demas ya las podre
> resolver.*
>
>
>
> *Si me recomiendan algun lugar donde encontrar este tema agradeceria
> mucho. Si me pueden orientar con un algoritmo tambien se lo agradecere, si
> me pueden ayudar con el codigo en C++ tambien... cualquier informacion sera
> bienvenida, el problema es el siguiente:*
>

Para el tema del cambio de base o sistema numérico, sugiero consultar el
artículo, "Sistemas de Numeración", en nuestra página yendo a:
http://articulos.conclase.net/?tema=matematicos&art=numeracion&pag=000.

Convertir de hexadecimal a binario es relativamente sencillo ya que 16 no
solamente es un múltiplo de 2 sino que es una potencia de 2, también. Por lo
tanto, existe una relación estrecha entre la base 16 (hexadecimal) y la base
2 (binario) que se fundamenta en que cada 4 dígitos binarios conllevan a un
solo dígito hexadecimal. Esto implica que podemos ir tomando dígitos
binarios de 4 en 4 para conseguir dígitos hexadecimales de 1 en 1. Esto
también funciona en viceversa: cada dígito hexadecimal implica 4 dígitos
binarios. Por ejemplo,

E4  =  ¿?

E  =>  1101
4  =>  0100

 E4  =  11010100

Según el ejemplo que nos has dado, existen varias soluciones de donde elegir
y que podrías implementar. Por ejemplo, puedes crear una tabla asociando los
dígitos hexadecimales con cadenas de caracteres que representan los dígitos
binarios. Esto podría ser,

const char szTablaHEXBIN[16][5] = { "0", "1",
                                                      "10", "11",
                                                      "100", "101",
                                                      "110", "111",
                                                      "1000", "1001",
                                                      "1010", "1011",
                                                      "1100", "1101",
                                                      "1110", "1111" };

Esto puede considerarse algo tramposo, porque ya lo tenemos hecho y
simplemente vamos eligiendo las cadenas que nos interesan. Hay que tener
cuidado con los demás dígitos que no sean los primerizos, porque habría que
"rellenar" con ceros. Por ejemplo,

12  =  ¿?

szTablaHEXBIN[1]  =>  "1"
szTablaHEXBIN[2]  =>  "10"

"110"

Esto no es correcto. Debería ser:

 "10010"

Tenemos que rellenar de '0' antes de escribir las cadenas de los dígitos
posteriores al primero, si hace falta.

La otra solución es manipulando el número entero representado en hexadecimal
para que se represente en binario. Esto supone recorrer el número aplicando
operaciones a nivel de bit para consultar el valor de cada dígito binario.
Sin embargo, creo que esto no es lo que te piden por el dato que dieron
acerca de la lectura de los caracteres desde el teclado: tienes que usar
'cin.get()' para recoger cada carácter. Quizá la solución anterior te venga
mejor.


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101123/51480a46/attachment.html>


Más información sobre la lista de distribución Cconclase