13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 519 — #557<br />

✐<br />

16.10. Ejercicios<br />

16.10. Ejercicios<br />

Las soluciones a los ejercicios se pued<strong>en</strong> <strong>en</strong>contrar <strong>en</strong> el docum<strong>en</strong>to electrónico<br />

titulado «The Thinking in <strong>C++</strong> Annotated Solution Guide», disponible por poco<br />

dinero <strong>en</strong> www.BruceEckel.com.<br />

1. Implem<strong>en</strong>te la jerarquía de her<strong>en</strong>cia del diagrama de OShape de este capítulo.<br />

2. Modifique el resultado del Ejercicio 1 del capítulo 15 para usar la Stack y el<br />

iterator <strong>en</strong> TStack2.h <strong>en</strong> vez de un array de punteros a Shape. Añada<br />

destructores a la jerarquía de clases para que se pueda ver que los objetos Shape<br />

han sido destruidos cuando la Stack se sale del ámbito.<br />

3. Modifique TPStash.h para que el valor de increm<strong>en</strong>to usado por inflate()<br />

pueda ser cambiado durante la vida de un objeto cont<strong>en</strong>edor particular.<br />

4. Modifique TPStash.h para que el valor de increm<strong>en</strong>to usado por inflate-<br />

() automáticam<strong>en</strong>te cambie de tamaño para que reduzca el número de veces<br />

que debe ser llamado. Por ejemplo, cada vez que se llama podría doblar el valor<br />

de increm<strong>en</strong>to para su uso <strong>en</strong> la sigui<strong>en</strong>te llamada. Demuestre la funcionalidad<br />

mostrando cada vez que se llama a inflate(), y escriba código de prueba <strong>en</strong><br />

main().<br />

5. Convierta <strong>en</strong> plantilla la función de fibonacci() con los tipos que puede<br />

producir (puede g<strong>en</strong>erar long, float, etc. <strong>en</strong> vez de sólo int).<br />

6. Usar el vector de la STL como implem<strong>en</strong>tación subyac<strong>en</strong>te, para crear una<br />

platilla Set que acepte solo uno de cada tipo de objeto que se aloje <strong>en</strong> él.<br />

Cree un iterador anidado que soporte el concepto de "marcador final" de este<br />

capítulo. Escriba código de prueba para el Set <strong>en</strong> el main(), y <strong>en</strong>tonces sustituyalo<br />

por la plantilla set de la STL para comprobar que el comportami<strong>en</strong>to<br />

es correcto.<br />

7. Modifique AutoCounter.h para que pueda ser usado como un objeto miembro<br />

d<strong>en</strong>tro de cualquier clase cuya creación y destrucción quiera comprobar.<br />

Añada un miembro string para que cont<strong>en</strong>ga el nombre de la clase. Compruebe<br />

esta herrami<strong>en</strong>ta d<strong>en</strong>tro una clase suya.<br />

8. Cree una versión de OwnerStack.h que use un vector de la Librería Estándar<br />

de <strong>C++</strong> como su implem<strong>en</strong>tación subyac<strong>en</strong>te. Será necesario conocer<br />

algunas de las funciones miembro de vector para poder hacerlo (sólo hay<br />

que mirar <strong>en</strong> el archivo cabecera ).<br />

9. Modifique ValueStack.h para que pueda expandirse dinámicam<strong>en</strong>te según<br />

se introduzcan más objetos y se quede sin espacio. Cambie ValueStackTest.<br />

cpp para comprobar su nueva funcionalidad.<br />

10. Repita el ejercicio 9 pero use el vector de la STL como la implem<strong>en</strong>tación<br />

interna de ValueStack. Note lo s<strong>en</strong>cillo que es.<br />

11. Modifique ValueStackTest.cpp para que use un vector de la STL <strong>en</strong><br />

vez de un Stack <strong>en</strong> el main(). Dése cu<strong>en</strong>ta del comportami<strong>en</strong>to <strong>en</strong> tiempo<br />

de ejecución: ¿Se g<strong>en</strong>era un grupo de objetos por defecto cuando se crea el<br />

vector<br />

519<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!