Você está na página 1de 5

Grado en Ingeniera Informtica

Introduccin a la Programacin- Curso 12-13


Relacin de Problemas Propuestos
Prctica 3 - Funciones en C
1.- Realiza una funcin que reciba como entrada las coordenadas cartesianas de un
punto del plano(x,y) y devuelva el cuadrante en el que se encuentra el punto (1, 2, 3, 4),
debe devolver 0 si se encuentra en un eje.
2.- Realiza tres funciones que tengan como argumento un valor radio, y calculen el
permetro de la circunferencia, rea del crculo y volumen de la esfera. Se debe
implementar una funcin main que haga uso de estas funciones dependiendo de una
opcin del usuario.
3.- Realiza un programa que lea dos nmeros enteros y en funcin de una opcin del
usuario realice la suma, resta producto o divisin entera de los mismos, utilizando
funciones. El men tambin ser visualizado por una funcin sin argumentos, que
devolver como resultado la opcin elegida.
La ejecucin ser de la siguiente forma:
1.-Sumar
2.-Restar
3.-Multiplicar
4.-Dividir
5.-Salir
Seleccione la operacin deseada: 3
Introducir dato1 : 2.5
Introducir dato2 : 10
Resultado 25
4.- Escribe una funcin que devuelva el nmero de cifras de un entero que se introduzca
por pantalla.
5.- Realiza un programa que lea dos nmeros 10 veces y realice en la primera lectura el
producto de los nmeros sin utilizar el operador * y en la segunda lectura la divisin sin
usar el operador / y as sucesivamente. Finalmente debe imprimir los resultados.
Implementarlo utilizando funciones (Producto_sumas, divisin_restas).
(Realiza la comprobacin de si el nmero es par o impar a travs de un macro).
6.- Realiza un programa que lea un entero por pantalla, defina un puntero que apunte a
esa variable entera y escriba:

a)Direccin y contenido del entero


b)Direccin y contenido del puntero
c)Valor referenciado por el puntero
Analiza los resultados obtenidos
7.- Dado el siguiente fragmento de cdigo:
int n1, n2;
int *p;
n1=2;
n2=3;
Realiza este ejercicio con papel y lpiz y posteriormente comprueba los resultados:
Determina:
a. n1
b. n2
c. j
Despus de ejecutar cada una de las siguientes sentencias:
a.
b.
c.
d.

p=&n2; n1=*p;
p=&n1; *p= 4;
p=&n2; n1=6; n2=n1;
p=&n1; *p=n2; n2= 6;

8.- Escribe una funcin que realice el intercambio de dos variables enteras. La cabecera
de la funcin ser void swap (int *x, int *y) y la llamada swap(&x, &y)
9.- Realiza un programa que calcule la intensidad que circula por una resistencia dados
R y V. I=V/R suponiendo que la funcin main del programa sea:
main()
{
float res, vol, intensidad;
obtener_valores(&res,&vol);
intensidad= calcular(res, vol);
imprimir_respuesta(intensidad);
}
10.- Realiza un programa que reciba un nmero y llame a una funcin que calcule el
factorial de ese nmero, posteriormente con el resultado del paso anterior, debe llamar
a la funcin fibonacci que calcule la sucesin de nmeros hasta ese. (realizarlo de dos
formas, una usando funciones que devuelvan los valores y otra simulando el paso de
parmetros por referencia).

11.-Escribe una funcin llamada mltiplo que determine para un par de enteros, si el
segundo de ellos es mltiplo del primero. La funcin debe tomar dos argumentos
enteros y regresar 1 (verdadero) si el segundo es mltiplo del primero, y 0 (falso) de no
ser as. Utilice sta funcin en un programa que introduzca una serie de pares enteros.
12.-Escriba un programa que contenga una funcin que nos permita calcular el valor
ms pequeo de tres nmeros reales
13.-Realiza un programa para calcular el coeficiente del binomio con una funcin
factorial.

m
m!


n n!* m n !
14.- Realiza un programa que, utilizando funciones calcule el valor del nmero e como
suma de la serie:

i! 0! 1! 2! ..... n!
15.- Realiza un programa utilizando funciones que dado un nmero entero nos d su
descomposicin en factores primos. Todo nmero entero tiene una nica
descomposicin dada por una multiplicacin de potencias de nmeros primos. El
programa deber encontrar estos nmeros primos y adems su potencia asociada
16.- Escribe un programa utilizando funciones que calcule los nmeros perfectos
menores que 1000 (Un nmero es perfecto si la suma de sus divisores, excepto l
mismo es igual al propio nmero). Implementa la funcin suma_divisores utilizando la
siguiente cabecera int suma_divisores(int numero)
17.- Escribe un programa utilizando funciones que determine si dos nmeros enteros
positivos son amigos (Dos nmeros son amigos si la suma de los divisores del primero
excepto el mismo es igual al segundo y viceversa). Implementa la funcin
suma_divisores usando la siguiente cabacera
void suma_divisores (int numero, int *suma)
18.- Escribe funciones que lleven a cabo lo siguiente:
a) Calcule la parte entera del cociente cuando el entero a se divide por el entero b
b) Calcule el residuo entero cuando el entero a es dividido por el entero b
c) Utilice las funciones desarrolladas en a y b para describir una funcin que introduzca
un entero entre 1 y 32.767 y lo visualice como una serie de dgitos, estando separados
cada par de dgitos por dos espacios. Por ejemplo el entero 4562 deber ser visualizado
como 4 5 6 2

19.- Escribe un programa que lea varios nmeros y que utilice una funcin que le
permita redondear el nmero al entero ms cercano. Para cada nmero procesado debe
mostrar tanto el nmero original como el nmero redondeado.
20.- Escribe un programa que ordene tres nmeros por el mtodo del intercambio
usando una macro para realizar el intercambio de dos variables.
21.- Realiza las siguientes declaraciones:
1. Una funcin f que devuelva un puntero a carcter
2. Una variable f de tipo puntero a funcin, funcin que devuelve un carcter y
no recibe argumentos
3. Una variable f de tipo puntero a funcin, funcin que devuelve una cadena
de caracteres y recibe un entero
22.- Realiza un programa que reciba dos nmeros, visualice un men con la operacin a
realizar y en funcin de dicha opcin del usuario realice la suma, resta, producto o
divisin de dichos nmeros a travs de una funcin opera que recibe los dos enteros y
un puntero a funcin: int (*operacin)(int, int)
23.-Escribe un programa, que mediante el uso de funciones, visualice el calendario
correspondiente a un mes determinado dado el mes y el ao. Por ejemplo el calendario
correspondiente al mes de septiembre de 2004 sera:
L

6
13
20
27

7
14
21
28

X
1
8
15
22
29

J
2
9
16
23
30

V
3
10
17
24

S
4
11
18
25

D
5
12
19
26

El usuario debe indicar nicamente el mes y el ao. La frmula para calcular el


da de la semana correspondiente a una fecha dada es:
a ) Meses de Enero y Febrero:
n a + 31 * (m - 1) + d * ( a - 1) div 4 - 3 * ((a + 99) div 100) div 4;
b ) Restantes meses:
(n a + 31 * ( m - 1) + d - (4 * m + 23) div 10 + a div 4 - (3 * (a div 100 + 1)) div 4)-1
donde a = ao, m = mes, dia = da
n mod 7 indica el da de la semana (0= domingo, 1 = lunes, 2 = martes...)
div se refiere a la divisin entera
24.- El seno de x se puede calcular aproximadamente sumando los primeros N trminos
de la serie infinita:
sen x = x - x 3 / 3! + x 5 / 5! - x 7 / 7! + ....
Escribe un programa, utilizando funciones, que lea el valor de x y calcule el valor del
seno; escrbelo de las dos siguientes formas:
4

a) Sumar los primeros N trminos donde N represente a un entero cuyo valor se


lee cada vez que se ejecute el programa junto con el valor de x
b) Continuar sumando trminos sucesivos a la serie hasta que el valor del ltimo
trmino sea menor que una determinada magnitud, por ejemplo 0.00001
25.- Realiza un programa, utilizando funciones que calcule el producto de dos nmeros
enteros positivos mediante el denominado algoritmo ruso del producto. El algoritmo
consiste en duplicar el primer factor y dividir (cociente entero) por 2 el segundo,
obteniendo un producto equivalente, salvo si el segundo factor es impar, en cuyo caso
es necesario acumular previamente el primero en donde se va a obtener el resultado. El
proceso termina cuando el segundo factor se hace cero.
Ejemplo: 25 * 6
Primer factor
25
50
100
200

Segundo factor

Acumulador

6
3
1
0

0
50
150
150

26.- Dado el siguiente programa, realiza un seguimiento indicando los valores que
toman cada una de las variables despus de ejecutarse cada una de las sentencias y qu
es lo que muestra por pantalla. (realiza el ejercicio con papel y lpiz y posteriormente
comprueba los resultados)
include <stdio.h>
#include <stdlib.h>
int x=2;

void d(int *x)


{
*x=*x+1;
printf("%d\n",*x);
}

void a()
{
printf("%d\n",x);
x=x*2;
printf("%d\n",x);
}

int main()
{
int x=5;
{
int x=7;
printf("%d\n",x);
}
printf("%d\n",x);
a();
printf("%d\n",x);
b();
printf("%d\n",x);
c(x);
printf("%d\n",x);
b();
printf("%d\n",x);
d(&x);
printf("%d\n",x);
system("PAUSE");
return 0;
}

void b()
{
static int x=4;
x*=3;
printf("%d\n",x);
}
void c(int x)
{
x=x*2;
printf("%d\n",x);
b();
}

Você também pode gostar