Ejercicios Tema 6. Funciones

Transcripción

Ejercicios Tema 6. Funciones
Tema 6. Funciones
Ejercicios
Tema 6. Funciones
1. Programa que calcule el cuadrado de todos los números comprendidos entre dos dados. Usar una
función a la que se le pasa como parámetro un valor y retorna su cuadrado.
2. Escribir un programa que lea dos números enteros A y B, y obtenga los valores A/B, A%B, utilizando
funciones. Escribir una función que dados A y B retorne la división de ambos y otra que retorne el resto.
Repetir el ejercicio utilizando una única función que calcule tanto la división como el resto.
3. Escribir una función con dos parámetros enteros, que devuelva true (1) si el segundo es divisor del
primero y false (0) en caso contrario. El programa principal solicitará al usuario 20 pares de valores y
mostrará un mensaje indicando quien divide a quien.
4. Simular el funcionamiento de una calculadora de enteros. Para ello se presenta un menú por pantalla que
muestre las opciones: sumar, restar, multiplicar, dividir, factorial, potencia y salir. Para cada opción se debe
realizar una función a la que se le pasan los datos como parámetro, los valida y retorna el resultado a main,
quien se encargará de mostrar el resultado.
5. Modificar el ejercicio anterior para que las operaciones se realicen considerando siempre un operando
común que se mostrará en el menú. Este operando tendrá inicialmente el valor 0. Por ejemplo, si
inicialmente se desea sumar, se solicitará un único valor y se sumará al valor general, que quedará
modificado. Las siguientes operaciones se realizarán sobre el valor modificado. Cada operación modificará
este valor. Hacer dos versiones, considerando este valor como global y definiéndolo como local en main y
pasándolo como parámetro.
6. Escribir un programa que lea tres números enteros y emita un mensaje que indique si están o no en
orden numérico. Usar una función que dados dos valores retorne true si el primero es mayor que el
segundo y false en caso contrario.
7. Escribir un programa que calcule el máximo de 3 números enteros solicitados al usuario. Utilizar una
función que dados dos valores enteros retorne el máximo de ambos.
8. Solicitar al usuario un rango [a..b] de valores enteros. Para cada valor en ese rango, calcular el factorial.
Usar una función que dado un valor entero retorna su factorial.
9. Escribir un programa que solicite caracteres al usuario hasta que teclee un carácter no alfabético o un
carácter alfabético en mayúsculas. El programa debe convertir cada carácter de minúscula a
mayúscula. El valor en ASCII de la letra ‘A’ es 65 y de la ‘a’ es 97. Utilizar una función que dado un
carácter en minúscula retorne el carácter correspondiente en mayúscula.
10. Escribir una función que permita intercambiar los contenidos de dos variables.
11. Escribir un programa que solicite un rango de valores [a..b] enteros por teclado y para cada uno de los
valores en el intervalo diga si es primo o no. Utilizar una función que devuelva cierto si un número
entero es primo y falso en caso contrario.
12. Suponiendo ya definida la función anterior, escribir un algoritmo que lea dos números enteros por
teclado y los sume sólo si son primos. En caso contrario, debe decir cuál (o cuáles) de ellos no son
primos. En el caso de que los sume, debe decir, además, si el resultado es un número primo.
13. Escribir una función que calcule xn, donde x es de tipo real y n es de tipo entero (no utilizar la función de
pow).
14. Escribir una función que calcule xn, dados ambos como parámetro. Usar la función para mostrar el
resultado de la siguiente expresión: (x4+ym)/2. Siendo x, y, y m tres números enteros introducidos por
teclado. Realizar el mismo ejercicio sin utilizar la función y comparar ambos.
Inma García
1/5
Tema 6. Funciones
15. Escribir un programa que calcule el más grande, el más pequeño y la media de N números enteros. El
programa principal mostrará los resultados por pantalla. Escribir las siguientes funciones:
•
Función leer: lee los N valores enteros. Los números se solicitan al usuario.
•
Función mayor_menor: calcula y devuelve al programa principal, el valor mayor y menor de los N
números.
•
Función media: calcula la media de los N valores.
16. Dados tres números enteros correspondientes a la hora, minutos y segundos actuales, calcular la hora
(en el mismo formato) que será un segundo más tarde. El algoritmo debe leer la hora en formato HH,
MM, SS, después transformarla a segundos, sumarle uno a dichos segundos y después volver a
transformarla en HH, MM, SS. Para ello, se deben diseñar dos funciones:
•
Hora_a_Segundos: dados tres parámetros de entrada correspondientes a hora, minutos y
segundos, devuelva la conversión de dicha hora a segundos.
•
Segundos_a_Horas: dado un parámetro de entrada correspondiente a una hora en segundos, la
convierta en horas, minutos y segundos, y la devuelva.
17. Escribir un programa que calcule un número combinatorio. El programa solicita los valores enteros n y
m y muestra el resultado. Utilizar una función que admita como parámetros m y n y devuelva el número
combinatorio. Esta función utiliza a su vez una función para calcular el factorial.
 m
m!
  =
 n  n! (m − n)!
18. Se dice que un número N1 es interdependiente de otro N2 cuando la suma de las cifras de N1 es
divisor de N2 y el producto de las cifras de N1 en múltiplo de N2. Dado un número N, calcular todos los
números interdependientes de 1 menores a 1000. Utilizar una función que dado un número entero
calcule la suma de sus cifras y otra que dado un número entero calcule el producto de sus cifras.
19. Escribir una función que acepte como parámetro un número entero positivo y cuente el número de
dígitos distintos de que consta. Utilizar un vector de 10 enteros para contar el número de dígitos
distintos. El programa principal lee el valor y muestra el resultado.
20. Escribir un programa que solicite al usuario dos números enteros y compruebe si son análogos. Dos
números son análogos, si sus reducidos son idénticos. Un número se llama reducido de otro, cuando no
contiene ningún dígito repetido a partir de la primera aparición por la izquierda. Escribir una función a la
que se le pase como parámetro un valor entero y retorne su reducido.
Valor
9331332
9993312
337624336
37336724
Reducido
9312
9312
37624
37624
¿Análogo?
Si
Si
21. ¿Cuál es la salida del siguiente programa?
void modificar (int a)
{
a=a *3;
printf ("Valor desde la función %d\n", a);
}
void main ()
{
int a=2;
Inma García
2/5
Tema 6. Funciones
printf ("Valor antes de llamar a la función %d\n", a);
modificar (a);
printf ("Valor después de llamar a la función %d", a);
}
22. Escribir un algoritmo que lea 10 números reales por teclado y, para cada uno de ellos, diga si poseen o
no parte fraccionaria. Escribir y utilizar una función denominada Es_fraccionario que devuelva cierto si
un número real posee parte fraccionaria y falso en caso contrario.
23. Calcular el número de días entre dos fechas. Las fechas se introducen como dd mm aaaa. Utilizar una
función que dadas dos fechas indique si la primera es menor que la segunda. Utilizar otra función que
cuente el número de días entre las dos fechas.
24. Escribir un programa que lea un dígito D y genere una tabla de todos los números enteros del 1 al 100, tales
que el valor, su cuadrado y su cubo, contengan todos el dígito D. Utilizar una función a la que se le pase
como parámetro un número entero positivo y un dígito y determine si la representación del número entero
contiene o no el dígito.
25. Escribir un programa que cuando el usuario escriba a la entrada una serie de valores mayores que 1,
produzca a la salida el número primo más cercano de cada uno de ellos. En caso de que haya dos números
primos equidistantes del número entero dado a la entrada, se desea conocer el valor de ambos. Utilizar una
función que dado un valor, calcule si es primo.
26. Escribir un programa que cambie el formato de una fecha. El programa principal solicita una fecha en
formato día, mes y año y muestra el resultado de la transformación. Utilizar una función que devuelva
un número entero a partir de la fecha (2 de abril de 1997 sería 20497).
27. Una fracción puede reducirse a su forma más simple dividiendo el numerador y el denominador por los
factores primos comunes a ambos (o directamente, por el MCD). Se trata de escribir un programa que
lea sucesivas parejas de valores enteros no negativos, que serán el numerador y el denominador de la
fracción respectivamente. Cada pareja de valores aparecerá en una línea. El programa reducirá la
fracción a su expresión más simple y la imprimirá. La última línea de los datos, contendrá un valor
negativo que marcará el final. Utilizar una función que dados dos números enteros (positivos) calcule su
máximo común divisor.
Datos
4 2
2 3
12423 12524
0 25
-1
Resultado
4/2 = 2/1
2/3 = 2/3
12423/12524 = 123 / 124
0/25=0/1
28. ¿Cuál es la salida de los siguientes programas?
A
int func (int x)
{
int y;
y=x*x;
return y;
}
void main ()
{
int a, i;
for (i=1;i<=5;i=i+1)
{
a= func (i);
printf ("%d ", a);
}
}
Inma García
B
int func (int x)
{
int i;
i=pow (x,2);
return (i);
}
void main ()
{
int a, i;
for (i=1;i<=5;i=i+1)
{
a= i*i+func (i);
printf ("%d ", a);
}
}
C
int a=3;
int func (int x)
{
a=a+x;
return (a);
}
void main ()
{
int cont;
for
(cont=1;cont<=5;cont=cont+1)
{
a= func (cont);
printf ("%d ", a);
}
3/5
Tema 6. Funciones
}
D
int a= 100, b=200;
int func1 (int x)
{
if (x < 100) return (a+x);
else return b;
}
int func2 (int x)
{
int prod=1;
prod=prod*x;
return (prod);
}
void main ()
{
int cont,c;
for (cont=1;cont<=5;cont++)
{
c=func2 (cont);
printf ("%d ", func1 (c));
}
}
E
int a= 100, b=200;
int func1 (int x)
{
int c;
c=func2 (x);
if (c < 100) return (a+c);
else return b;
}
int func2 (int x)
{
int prod=1;
prod=prod*x;
return (prod);
}
void main ()
{
int cont;
for (cont=1;cont<=5;cont++)
printf ("%d ", func1(cont));
}
F
int a= 100, b=200;
char func2 (int x)
{
return x;
}
float func1 (int x)
{
char c;
c=func2 (x);
if (c < 100) return c*0.01;
else return c*0.1;
}
void main ()
{
int cont;
for (cont=1;cont<=5;cont++)
printf ("%f ", func1 (cont));
}
G
int a= 0, b=1;
int func1 (int a)
{
b= func2 (a+1) +1;
eturn b;
}
int func2 (int a)
{
return (b+a);
}
void main ()
{
int cont;
for (cont=1;cont<=5;cont++)
{
b= b+ func1 (a+1) + 1;
printf ("%d ",b);
}
}
Inma García
4/5
Tema 6. Funciones
H
int a= 0, b=1;
int func1 (int a)
{
int b;
b= func2 (a+1) +1;
return b;
}
int func2 (int a)
{
return (b+a);
}
void main ()
{
int cont;
for (cont=1;cont<=5;cont++)
{
b= b+ func1 (a+1) + 1;
printf ("%d ",b);
}
}
J
void eleva (int a)
{
a = a * a;
}
void main()
{
int a;
for (a = 0; a < 10; a = a + 2)
{
eleva(a);
printf(“ %d”,a);
}
}
I
int a;
int modificar (int a)
{
a *= 3;
}
void main ()
{
a = 2;
modificar(a);
printf(“%d”, a);
}
K
#define N 5
int b=2, a=3;
int funcion (int b)
{
int c;
c = b + a;
b++;
return c;
}
void main ()
{
int i;
for (i = 0; i < N; i++)
b = funcion(i);
printf(“%d”,b);
}
L
int a = 0, b = 3;
int func1 (int a)
{
b = b + func2(a) + 1;
return b;
}
int func2 (int a)
{
return (b + a + 1);
}
void main()
{
int cont;
for (cont = 1; cont <= 5; cont++)
{
b = func1(cont + a + b) + 1;
printf(“%d\n”, b);
}
}
Inma García
5/5

Documentos relacionados