22.6.-
Defina una clase para un
tipo llamado TipoContador. Los objetos de este tipo sirven
para contar cosas, por lo que registran una cuenta que es un número
entero no negativo. Incluya un constructor predeterminado
que establezca el contador a cero y un constructor con un argumento
que establezca el contador al valor especificado por su argumento.
Incluya funciones miembro para incrementar y decrementar el contador
en uno. Aegurese de que ninguna función miembro permita que
el valor del contador se vuelva negativo. También incluya
una función miembro que devuelva el valor actual de la cuenta
y otra que envíe la cuenta a un flujo de salida. La función
miembro para efectuar la salida tendrá un parámetro
formal de tipo ostream para el flujo de salida que recibe las salidas.
Incruste su definición de clase en un programa de prueba.
22.7.-
Mi madre siempre llevaba un pequeño contador rojo a la tienda
de abarrotes. El contador servía para llevar la cuenta de
la cantidad de dinero que habría gastado hasta un momento
dado de su visita si comprara todo lo que ponía en su canasta.
El contador podía desplegar hasta 4 dígitos y tenía
botones para incrementar cada dígito, así como un
botón para reestablecer el contador. Había un indicador
de desbordamiento que se ponía rojo si se introducía
más dinero que los $99.99 pesos que podía registrar.
Escriba
e implemente las funciones miembro de una clase contador que simule
y generalice un poco el comportamiento del contador que se describió
para la tienda de abarrotes. El constructor deberá
crear un objeto contador que pueda contar hasta el argumento del
constructor. Es decir, Contador(9999) deberá crear un contador
capaz de contar hata 9999. Un contador recien construído
muestra una lectura de 0. La función miembro void restablecer();
establece a cero el número del contador. Las funciones
miembro void incr1(); void incr10(); void incr100() y void incr1000();
incrementan en 1 los dígitos de las unidades, decenas, centenas
y millares, respectivamente. incluir cualquier acarreo al incrementar
no deberá requerir más acción que sumar un
número apropiado al miembro de datos privado. Una función
miembro bool desborde(); detecta desbordamiento. El desbordamiento
es el resultado de incrementar el miembro de datos privado del contador
más allá del máximo especificado al construirse
el contador.
Utilice
esta clase para simular el aparato rojo de mi madre. Aunque el número
que se despliega es un entero, en la simulación, los dos
dígitos de la derecha (de orden más bajo) siempre
se consideran como centavos y decenas de centavos, el siguiente
dígito es pesos y el dígito de la extrema izquierda
es decenas de pesos.
Asigne
teclas para centavos, decenas de centavos, pesos y decenas de pesos.
Lamentablemente, no hay un conjunto de teclas que resulte especialmente
mnemónico. Una opción es emplear una de las teclas
asdfo : a para centavos, seguida de un dígito 1-9; s para
decenas de pesos, seguida de un dígito 1-9; d para pesos,
seguida de un dígito 1-9; y f para decenas de pesos, seguida
de un dígito 1-9. Después de cada entrada (a, s, d
o f, seguida de 1-9) se oprime la tecla de Entrar. Si hay desbordamiento,
éste se informa después de cada operación.
Se puede solicitar el desbordamiento oprimiendo la tecla o.
|