[C con Clase] Tema 11 Ejercicio 2 del Curso C++
Steven Davidson
srd4121 en njit.edu
Jue Sep 11 20:52:13 CEST 2008
Hola Samuel,
Arkiant wrote:
> Hola buenas tardes,
>
> tengo un pequeño problema con el ejercicio mencionado en el asunto
> aquí viene el enunciado:
>
[CORTE]
>
> El problema que tengo es que no entiendo nada, es decir, se que tengo
> que escribir una estructura con 3 campos: Ano, Mes, Dia. Lo de los
> valores que pueden tomar tambien lo entiendo, lo de la obtención del
> año como 2003 = 43 nosé porque debe dar eso, ni como sacarlo.
>
Esto se explica en el enunciado:
"En ese caso el año se obtiene sumando 1960 al valor de año. El año 2003
se almacena como 43."
Es decir, 1960+43 = 2003. Visto de otro modo, 2003 - 1960 = 43. Piensa
que 1960 es el año base y lo que guardamos es el desplazamiento.
> Por otra parte tenemos lo de ajustar los tipos eso también lo
> entiendo si es lo que pienso (char, char, char).
>
Exacto. Elegimos un tipo de dato que se ajuste el espacio de memoria
para almacenar estos valores. Elegir 'char' nos permitiría guardar y
manipular estos números.
> Y ahora viene la parte mas "extraña" para mi:
>
> "Diseñar una estructura análoga, llamada "fecha", pero usando campos
> de bits. Usar sólo un entero corto sin signo (unsigned short), es
> decir, un entero de 16 bits. Los nombres de los campos serán: dia,
> mes y anno."
>
> esto me da a enteder dos cosas, o una estructura con campos repetidos
> o dos estructuras completamente diferentes una con campos de
> variables, y la otra con campos de bits.
>
No. Anterior a este párrafo hablamos de un posible diseño usando
'struct'. Ahora viene lo que pide el ejercicio: "diseñar una estructura
análoga". Es decir, tienes que diseñar una sola estructura parecida a la
que se menciona previamente. Sin embargo, debes usar 16 bits para
almacenar los tres conceptos y propiedades de una fecha. El enunciado
del ejercicio también te da la implementación: "diseñar una
estructura...usando campos de bits". Lo que tienes que hacer es
descubrir cuántos bits tienes que dedicar a cada campo para que "quepa"
en 16 bits.
> Y una preguntita mas:
> Los valores los tiene que poner el usuario y luego el programa
> procesar toda la información y convertir al formato adecuado o debe
> estar ya en el código fuente?
>
El enunciado sólo pide el diseño. Si quieres crear un programa sencillo
para ver que todo funciona bien, entonces adelante. Ahora bien, huelga
decir que no podrás pasar un campo de una estructura de bits a 'cin >>'.
Necesitarás usar una variable intermediaria. Esta variable se usará para
la lectura con 'cin >>' y luego en la asignación a tal campo. Por ejemplo,
fecha f1;
int temp;
cout << "Dia: ";
cin >> temp;
f1.dia = temp;
> Grácias por todo y por este maravilloso Curso/Lista que grácias a
> ellos cada día aprendo mas el mundillo del C/C++.
>
De nada; para eso estamos.
Espero que lo anterior te aclare las dudas.
Steven
Más información sobre la lista de distribución Cconclase