Vista previa del material en texto
5. Si int1 tiene el valor 12, int2 tiene el valor 18 e int3 tiene el valor 21, ¿cuál es el resultado de
cada una de las siguientes expresiones booleanas?
a) int1 < int2 && int2 < int3
b) int1 < int3 || int3 < int2
c) int1 <= int2 – 6
d) int2 <= int1 + 5 || int3 >= int2 + 5
e) !(int1 < 30)
f) !(int2 == int1 && int3 == int1)
g) !(int1 > 25) && !(int2 < 17)
6. Si string1 tiene el valor "miniscule", string2 tiene el valor "minimum" y string3 tiene el
valor "miniature", ¿cuál es el resultado de cada una de las siguientes expresiones?
a) string1 > string2
b) string1 > string2 && string2 > string3
c) string1.substr(0, 4) == string2.substr(0, 4)
d) string1 > "maximum"
e) string3.substr(0, 4) == "mini" || string1 == string2
f) string3.length() > string1.length() && string1 > string3
g) !((string1.substr(8, 1) == string3.substr(8, 1)) &&
string1.length() == 9)
7. ¿Por qué la siguiente expresión no da como resultado un error de división entre cero cuando
someInt tiene el valor 0?
someInt != 0 && 5/someInt > 10
8. Los operadores bool tienen menor precedencia que los operadores aritméticos, con excepción del
operador !, que tiene la misma precedencia que el menos unario. ¿Verdadero o falso?
9. La expresión lógica en una sentencia If se encierra entre paréntesis sólo para hacer el código más
legible. C++ no requiere los paréntesis. ¿Verdadero o falso?
10. ¿Qué hace la siguiente sentencia If cuando el valor en someInt es 77?
if (someInt <= 44) || (someInt – 37 < 40)
cout << "The data is within range.";
else
cout << "The data doesn't make sense.";
11. ¿Qué hace la siguiente sentencia If cuando el valor en string1 es "The"?
if (string1.length() == 3 && string1.substr(0, 1) = "T")
cout << "The word may be \"The\"";
else
{
string1 = "The";
cout << "The word is now \"The\"";
}
12. ¿Qué hace la siguiente sentencia If cuando el valor en fl oat1 es 3.15?
if (fabs(fl oat1 – 3.14) < 0.00000001)
{
cout << "The area of the circle of radius 6.0 is
approximately:"
<< endl;
cout << 6.0 * 6.0 * fl oat1;
}
13. ¿Por qué la siguiente sentencia If produce siempre "false" sin importar el valor en someInt?
198 | Capítulo 5: Condiciones, expresiones lógicas y estructuras de control de selección
Dale005.indd 198Dale005.indd 198 4/12/06 19:01:214/12/06 19:01:21
www.FreeLibros.me
if (someInt = 0)
cout << "true";
else
cout << "false";
14. ¿Cuál es el resultado del siguiente segmento de código cuando score tiene el valor 85?
if (score < 50)
cout << "Failing";
else if (score < 60)
cout << "Below average";
else if (score < 70)
cout << "Average";
else if (score < 80)
cout << "Above average";
else if (score < 90)
cout << "Very good";
else if (score < 100)
cout << "Excellent";
15. ¿Cuál es el resultado del siguiente segmento de código cuando score tiene el valor 85?
if (score < 50)
cout << "Failing";
if (score < 60)
cout << "Below average";
if (score < 70)
cout << "Average";
if (score < 80)
cout << "Above average";
if (score < 90)
cout << "Very good";
if (score < 100)
cout << "Excellent";
16. ¿Cómo arregla una sentencia If anidada que tiene un else suspendido?
17. ¿Cómo escribiría una expresión booleana en una sentencia If si desea que la rama de las senten-
cias Then se ejecuten cuando el archivo inData está en estado de falla?
18. ¿Hay un límite respecto a cuán profundamente es posible anidar las sentencias If?
Ejercicios de calentamiento para programación
1. Escriba una expresión booleana que es verdadera cuando la variable bool, moon, tiene el valor
"blue" o el valor "Blue".
2. Escriba una expresión booleana que es verdadera cuando inFile1 e inFile2 están en estado
de falla.
3. Escriba una sentencia de bifurcación que lee hacia una variable string denominada someString,
desde un archivo nombrado inFile si el archivo no está en estado de falla.
4. Escriba una sentencia de bifurcación que prueba si una fecha viene antes que otra. Las fechas se
almacenan como enteros que representan el mes, día y año. Así que las variables para las dos
fechas se llaman month1, day1, year1, month2, day2 y year2. La sentencia debe producir un
mensaje apropiado dependiendo del resultado de la prueba. Por ejemplo:
12/21/01 viene antes que 1/27/05
o bien,
7/14/04 no viene antes que 7/14/04
Ejercicios de calentamiento para programación | 199
Dale005.indd 199Dale005.indd 199 4/12/06 19:01:224/12/06 19:01:22
www.FreeLibros.me
5. Cambie la sentencia de bifurcación que escribió para el ejercicio 4 de modo que cuando la pri-
mera fecha no viene antes que la segunda, establezca la primera fecha igual a la segunda además
de imprimir el mensaje.
6. Escriba una expresión booleana que sea true cuando algunas de las variables bool, bool1 o
bool2 sea true, pero false siempre que ambas sean true o ninguna de ellas sea true.
7. Escriba una sentencia de bifurcación que pruebe si score está en el intervalo de 0 a 100 y que
produzca un mensaje de error si no está dentro de ese intervalo.
8. Cambie la sentencia de bifurcación que escribió para el ejercicio 7 de modo que, cuando score
está en el intervalo apropiado, sume score a una variable total en ejecución denominada
scoreTotal e incremente un contador llamado scoreCount.
9. Escriba un segmento de código que lea un valor int de cada uno de dos archivos, infi le1 e
infi le2, y si ningún archivo está en el estado de falla, que escriba el valor menor de los dos en
un archivo denominado outfi le y lea otro valor del archivo que tuvo el valor menor. Si cual-
quiera de los archivos está en el estado de falla, entonces el valor del que no está en estado de
falla se escribe en outfi le. Si ambos archivos están en estado de falla, entonces se produce
un mensaje de error para cout. Los valores int se pueden introducir en variables value1 y
value2.
10. Cambie la siguiente serie de sentencias If-Then en una estructura anidada If-Else-If.
if (score > 100)
cout << "Incompetente.";
if (score <= 100 && score > 80)
cout << "Fin de semana regular.";
if (score <= 80 && score > 72)
cout << "Jugador competitivo. ";
if (score <= 72 && score > 68)
cout << "¡Se volvió profesional!";
if (score <= 68)
cout << "¡Hora de participar en un torneo!";
11. Escriba una estructura If que produzca por lo menos tres valores, count1, count2 y count3. Si
hay más de una variable con el valor mínimo, entonces produzca el valor tantas veces como se
encuentre en esas variables.
12. Se supone que el siguiente segmento de programa no imprime nada; sin embargo, produce el
primer mensaje de error, "Error en el máximo: 100". ¿Qué sucede y cómo se corregiría esto?
¿Por qué no produce ambos mensajes de error?
maximum = 75;
minimum = 25;
if (maximum = 100)
cout << "Error en el máximo: " << maximum << endl;
if (minimum = 0)
cout << "Error en el mínimo: " << minimum << endl;
13. Escriba una sentencia If que toma la raíz cuadrada de la variable area sólo cuando su valor es
no negativo. De otro modo la sentencia debe fi jar area igual a su valor absoluto y luego tomar
la raíz cuadrada del nuevo valor. El resultado se debe asignar a la variable root.
14. Escriba un plan de prueba para la siguiente estructura de ramifi cación.
cout << "El agua es un ";
if (temp >= 212)
cout << "gas.";
else if (temp > 32)
cout << "líquido.";
else
cout << "sólido.";
200 | Capítulo 5: Condiciones, expresiones lógicas y estructuras de control de selección
Dale005.indd 200Dale005.indd 200 4/12/06 19:01:244/12/06 19:01:24
www.FreeLibros.me