Introducción a Patrones de Diseño en C++ con Qt4/1.6.1 Ejercicios: Entrada y Salida

Versión para imprimir esta pagina

Ejercicios: Entrada y Salida

editar

1 Usando el Ejemplo 1.4, haz lo siguiente:

  • Primero, compila y ejecuta para ver su funcionamiento normal.
  • ¿Qué pasa si ingresas un valor no numérico en el año de nacimiento?
  • ¿Qué pasa si ingresas un nombre como Jorge el Curioso como tu nombre?
  • ¿Qué pasa si remueves la siguiente línea?
using namespace std; 
  • Reemplaza la sentencia:
cin >> TuNombre; 

Por la sentencia:

getline(cin, TuNombre); 

y prueba Jorge el Curioso de nuevo.

  • ¿Puedes explicar las diferencias de funcionamiento entre cin >> y getline()? Discutimos esto en la Sección 1.11.
  • Añade algunas preguntas mas para que el programa requiera una variedad de números y cadenas y prueba los resultados.

2. Considerando el Ejemplo 1.5:

Ejemplo 1.5

editar
Ejemplo: Ejemplo 1.5 src/early-examples/fac2.cpp
  • long n; Entero largo
  • cin >> n; lee desde stdin, trata de convertirlo a long
     #include <iostream> 
     long factorial(long n) {
         long ans = 1;
         for (long i = 2; i <= n; ++i) {
             ans = ans * i;
             if (ans < 0) {
                 return -1;
             }
         }
         return ans;
     }
     int main() {
         using namespace std;
         cout << "Por favor ingresa n: " << flush;
         long n;       
         cin >> n;      
         if (n >= 0) { 
             long nfact = factorial(n);
             if (nfact < 0) {
                 cerr << "error de carga: " 
                      << n << " es demasiado grande." << endl;
             }
             else {
                 cout << "factorial(" << n << ") = "
                      << nfact << endl;
             }
         }
         else {
             cerr << "Desconocido:  "
                  << "factorial de un número negativo: " << n << endl;
         }
         return 0;
     }
  • Prueba el Ejemplo 1.5 con una variedad de valores de entrada, incluyendo algunos valores no numéricos.
  • Determina el valor de entrada más largo que producirá una salida válida.
  • ¿Puedes cambiar el programa para que este produzca resultados válidos para valores de entrada más grandes?
  • Modifica el programa para que este no produzca resultados inválidos.
  • Explora los efectos de usar la sentencia:
            if (cin >> n)   {  ...  } 

para encerrar el proceso de n en este programa. En particular, trata de ingresar datos no numéricos después del prompt. Este es un ejemplo de el uso del operador de conversión, que discutiremos con más detalle en la Sección 2.11.

  • Modifica el programa para que acepte valores desde el usuario hasta que el valor 9999 haya sido ingresado.

Versión para imprimir esta pagina