BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 14 Más sobre Funciones
Ejercicios Propuestos

14.1.- La serie de Fibonacci

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

empiza con los términos 0 y 1 y tiene la propiedad de que cada término siguiente es la suma de los dos términos precedentes.

  1. Escriba una función no recursiva Fibonacci(n) que calcule el número Fibonacci de orden n.

  2. Determine el número fibonacci más grande que puede ser impreso en su sistema. Modifique el programa de la parte 1) para utilizar double en vez de int, a fin de calcular y regresar números fibonacci. Deje que el programa cicle hasta que falle debido a valores en exceso altos.

14.2.- ¿Es posible llamar recursivamente a main? Escriba un programa que contenga una función main. Incluya la variable local count de tipo static inicializada a 1.Postincremente e imprima el valor de count cada vez que main es llamada . Ejecute su programa ¿qué ocurre?

14.3.- El máximo común divisor de los enteros x e y es el entero más grande que divide en forma completa tanto a x como a y. Escriba una función recursiva gcd que regrese el máximo común divisor de x y de y. El gcd de x y de y se define en forma recursiva como sigue: si y es igual a 0, entonces gcd (de x, y) es x; de lo contrario gcd (de x, y) es igual a gcd(y, x%y) donde % es el operador de módulo.

14.4.- Escriba la función distance que calcule la distancia entre dos puntos (x1, y1) y (x2, y2) Todos los valores de los números y valores de regreso deberán de ser de tipo float.

14.5.- Escriba un programa que indique qué monedas hay que entregar para dar cualquier cantidad de cambio entre 1 y 99 centavos de dolar. Por ejemplo, si la cantidad es 80 centavos, la salida sería parecida a ésto:

86 centavos pueden entregarse como

3 cuarto(s) 1 dime(s) y 1 penny(s)

Utilice denominaciones de monedas de 25 centavos (cuartos), 10 centavos (dimes) y 1 centavo (penny). No use monedas de 5 centavos (nickel) ni de medio dólar. Su programa usará la siguiente función entre otras:

void calocular_moneda(int valor_moneda, int& numero, int& restante);

//Precondición: 0 < valor_moneda < 1000; 0 <= restante < 100.

//Postcondición: número se ha establecido al número máximo de monedas con

//denominación valor_moneda que caben en restante centavos.

// se le ha restado a restante el valor de las monedas, es decir,

// se le ha restado número * valor_moneda.

Por ejemplo, supongamos que el valor de la variable restante es 86. Entonces, después de la siguiente llamada, el valor de número será 3 y el valor restante será 11 (porque si quitamos tres cuartos de 86 centavos nos quedan 11 centavos):

calcular_monedas(25, numero,restante);

Incluya un ciclo que permita que el usuario repita este cálculo con otros valores de entrada hasta que diga que quiere terminar el programa. Sugerencia: Use división entera y el operador % para implementar esta función.

14.6.- Escriba un programa que lea una longitud en pies y pulgadas y despliegue la longitud equivalente en metros y centímetros. Utilice al menos tres funciones: una para la entrada, una para calcular y una para la salida. Incluya un ciclo que permita que el usuario repita este cálculo con otros valores de entrada hasta que diga que quiere terminar el programa. Un pie equivale a 0.3048 metros, hay 100 centímetros en un metro y 12 pulgadas en un pie.

14.7.- Escriba un programa como el del ejercicio anterior, pero que convierta metros y centímetros a pies y pulgadas. Use funciones para las subtareas.

14.8.- (Deberá hacer los dos proyectos de programación anteriores antes de intentar éste). Escriba un programa que combine las funciones de los dos proyectos de programación anteriores. Dicho programa pregunta al usuario si quiere convertir de pies y pulgadas a metros y centímetros o de metros y centímetros a pies y pulgadas, y luego efectúa la conversión deseada. Haga que el usuario responda tecleando el entero 1 si desea un tipo de conversión, o 2 si desea el otro. El programa lee la respuesta del usuario y luego ejecuta una instrucción if-else. Cada bifurcación de la instrucción if-else será una llamada de función. Las dos funciones que se invocan en la instrucción if-else tendrán definiciones muy similares a los programas de los dos proyectos de programación anteriores, por lo tanto, serán definiciones de función relativamente complicadas que invocan otras funciones dentro de su cuerpo. Incluya un ciclo que permita que el usuariorepita este cálculo con otros valores de entrada hasta que diga que quiere terminar el programa.

14.9.- Escriba una función que calcule la media y la desviación estándar de cuatro puntajes. La desviación estándar se define como la raíz cuadrada de la media de los cuatro valores (si-a)^2, donde a es la media de los cuatro puntajes s1, s2, s3, s4.La función tendrá seis parámetros e invocará otras dos funciones. Incruste la función en un programa controlador que permita probar la función una y otra vez hasta que usted indique que desea terminar.

14.10.- Escriba una función recursiva power (base, exponente) que al ser invocada regrese (base^exponete).

Por ejemplo, power(3, 4) = 3 * 3 * 3 * 3. Suponga que exponente es un entero mayor o igual a 1. Sugerencia: el paso de recursión deberá de utilizar la relación

base^exponente = base * base ^(exponente-1)

y la condición de terminación ocurrirá cuando exponente es igual a 1 porque

base^1 = base