3 de noviembre de 2016

Ejercicios selectos (funciones).

  1. Modifique el Ejemplo 4.1 para que considere el caso cuando la ecuación cuadrática sólo tiene una raíz, i.e. cuando el discriminante es igual a cero; de tal forma que sólo se calcule y presente un resultado en la salida estándar.
  2. Modifique el ejercicio anterior para que tantos los coeficientes de la ecuación como las raíces, sean ahora tipos de dato double. No olvide hacer los ajustes correspondientes para los especificadores de formato.
  3. Modifique el Ejemplo 4.2 para que las variables de la función main sean x ,y y z ¿Compila?, ¿por qué? Suponiendo que compila, ¿cambia en algo el funcionamiento del programa?, ¿por qué? ¿Y si ahora se cambia el nombre de los parámetros de las funciones por a, b y c?
  4. Complete el Ejemplo 4.2 con la función medio, la cual devuelve el número de en medio en base a su valor ordinal. Utilice lo resuelto en el Ejercicio 5 (Primera Parte) de la entrada Ejercicios selectos para las estructuras de control.
  5. Escriba un programa que, a través de una función, calcule el cuadrado de un número double.
  6. Utilice la función desarrollada en el ejercicio anterior para resolver el problema del Ejemplo 4.1. Observe que en la línea 22 el discriminante lleva el cálculo de b al cuadrado (); utilice su función para calcular dicho valor.
  7. Escriba una función que permita convertir de millas a kilómetros. Una milla es aproximadamente igual a 1.61 kilómetros. Escriba también un programa que pruebe su función.
  8. Escriba una función que permita convertir de kilómetros a millas. Escriba también un programa que pruebe su función.
  9. El factorial de un número n (n >= 0) denotado por n! se obtiene según lo definido en la siguiente expresión: n! = n * (n - 1) * (n - 2) * . . . * 1; es decir, se multiplica el número, por su antecesor y éste por su respectivo antecesor y así sucesivamente hasta llegar al neutro multiplicativo. Escriba una función que calcule el factorial de un número.
  10.  Escriba un programa que a través de una función, calcule el producto de dos números enteros a y b por medio de sumas sucesivas, esto es: a * b = a + a + . . . + a, donde a se suma tantas veces como lo indique b. Para ello:
    1. Resuelvalo primero con dos números enteros positivos.
    2. ¿Qué pasa si alguno de los números es negativo? ¿Cómo se comporta su algoritmo, representado en la función, ante dicha situación? Tome en cuenta que el resultado es un número negativo.
    3. ¿Qué pasa si ambos números son negativos? ¿Cómo se comporta su algoritmo, representado en la función, ante dicha situación? Tome en cuenta que para este caso el resultado es un número positivo.
   11.  Escriba un programa que a través de una función, calcule el cociente entero de dos números enteros positivos a y b por medio de restas sucesivas, esto es a / b ==>

  a - b = c1, si c1 >= b, entonces
c1 - b = c2, si c2 >= b, entonces
c2 - b = c3, si c3 >= b, entonces
        .     .     .                                
donde el cociente estará dado por el número de veces que se haya podido repetir el procedimiento descrito.
   12.  Escriba un programa que a través de una función, calcule la potencia de dos números a y b por medio de productos sucesivos, esto es:
                                        a^b = a * a * .  .  . * a 
donde a se multiplica tantas veces como lo indique b.
 Para ello:
  • Resuélvalo primero con dos números enteros positivos.
  • ¿Qué pasa si a es negativo?
  • ¿Qué aspectos debe tomar en consideración si b es negativo?
  • ¿Qué pasa si a o b son cero? ¿Qué pasa si ambos lo son?
   13.  Repita el ejercicio anterior, pero en lugar de usar el operador de multiplicación (*), utilice la función que desarrolló en el Ejercicio 10.
   14.  Si para el programa del Ejemplo 4.4 se realizara una nueva ronda de llamados consecutivos a cada una de las tres funciones involucradas, ¿cuáles serían los valores que se visualizarían en la salida estándar?
   15.  Para el Ejemplo 4.6 elimine la línea 7, guarde el archivo, y compile. ¿Qué sucede?, ¿a qué se debe y por qué?
   16.  Incorpore a la biblioteca personalizada de funciones del Ejemplo 4.5 la función medio realizada en el Ejercicio 4 y pruebe su funcionamiento.
   17.  Escriba una función que determine si un número entero positivo es o no un número primo. Un número primo es aquél que es divisible únicamente por la unidad y sí mismo. Su función deberá regresar un 1 si el número enviado como argumento es primo y 0 si no lo es.
   18.  Escriba una función que determine si un número es perfecto o no. Un número perfecto es un entero positivo que es igual a la suma de sus divisores positivos sin considerarse él mismo como divisor.
   19.  Escriba un programa que, dado un número de hasta cinco cifras, exprese el valor de dicho número en palabras. Así por ejemplo, para el número 99 999, el programa dará como salida: “99 999: noventa y nueve mil novecientos noventa y nueve”. El castellano (español) es un idioma complejo, así que si la salida de su programa es “99 999: noventa y nueve mil nueve cientos noventa y nueve”, o genera expresiones por el estilo, es aceptable. El número debe ser leído como tal (no por dígitos separados), y su análisis inicia por "desmenuzarlo" en unidades, centenas, millares, etcétera e identificar los patrones convenientes para expresarlo en palabras. 
    La idea de este ejercicio es que haya funciones que se encarguen de procesar cada uno de los dígitos, y que se identifiquen patrones de repetición al expresar cantidades dependiendo del dígito y su posición.
   20.  Pruebe creando otras bibliotecas personalizadas de funciones con los ejemplos y ejercicios realizados hasta ahora. No importa por ahora que las funciones de dichas bibliotecas no tengan mucha relación, lo que importa por ahora es practicar la creación de bibliotecas personalizadas de funciones.