Cooperación Entre Funciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Programación II

Docente: Juan Orlando Monsalve Rodríguez

Cooperación entre Funciones Programación Estructurada

1. Cooperación entre funciones


Se refiera a la colaboración de funciones para la solución de un problema.

Figura 1. Cooperación entre funciones

Ejercicio 1

Se dice que dos números a y b son “amigos” si cada uno de ellos es la suma de los divisores propios del otro.
Los divisores propios son todos los divisores excepto el mismo número.

Ejemplo: 220 y 284

sumaDiv(220) = (1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110)


= 284
sumaDiv (284) = (1, 2, 4, 71, 142)
= 220

Realizar las funciones necesarias.

1
Programación II
Docente: Juan Orlando Monsalve Rodríguez

Documentación de la Función
def sumaDiv(num):
suma=0
k=1
while(k<num):
if((num%k)==0):
suma=suma+k
k+=1
return(suma)

def amigos(num1,num2):
suma1=sumaDiv(num1)
suma2=sumaDiv(num2)

if(suma1==num2 and suma2==num1):


a=True
else:
a=False
return (a)

#Código de prueba
x=amigos(220,284)
print(x)#retorna True
x=amigos(1184, 1210)
print(x) #retorna True
x=amigos(125,345)
print(x) #retorna False

Ejercicio 2

Hacer una función que reciba como parámetro un número entero positivo y retorne si es u número narcisista o
no. Un número narcisista es un Número de n dígitos que resulta ser igual a la suma de las potencias de orden
n de sus dígitos. Realizar las funciones necesarias.

Ejemplo:
7 = 71
153 = 1³ + 5³ + 3³.

9474 = 94 + 44 + 74 + 44

2
Programación II
Docente: Juan Orlando Monsalve Rodríguez

def contard(num): Documentación de la Función


cont=0
while(num>0):
num=num//10
cont+=1

return(cont)

def sumaPot(num):
suma=0
expo=contard(num)
while(num>0):
n=num%10
suma=suma+(n)**expo
num=num//10
return(suma)

def narcisista(num):
x=sumaPot(num)
if(x==num):
a=True
else:
a=False
return(a)

#Código de prueba
x=narcisista(153)
print(x) #retorna True
x=narcisista(345)
print(x) #retorna False
x=narcisista(9474)
print(x) #retorna True

Ejercicio 3
El número de combinaciones de m elementos tomados de n en n está determinado por

 m m!
   Haga una función factorial y una función combinarlo con dos parámetros n y m. Recordar
 n  n !( m  n) !
que n y m son positivos y que si n es mayor que m la combinatoria es cero.

3
Programación II
Docente: Juan Orlando Monsalve Rodríguez

Documentación de la Función
def factorial(num):
k=1
f=1
while(k<=num):
f=f*k
k+=1
return(f)
def combinatoria(m,n):
if(n>m):
c=0
else:
fm=factorial(m)
fn=factorial(n)
fmn=factorial(m-n)
c=(fm)/(fn*fmn)
return(c)

#Casos de prueba
s=combinatoria(10,4)
print(s)
s=combinatoria(7,4)
print(s)

Ejercicio 3
Hacer las funciones necesarias para que dado un entero positivo k se calcule el valor de


 1k 1
Utilizando las series de Taylor.   4
k 1 (2k  1)

Documentación de la Función
def potencia(e):
p=-1
if((e%2)==0):
p=1
return(p)

def sumatoria(num):
sumapi=0
k=1
while(k<=num):
num=potencia(k+1)
den=((2*k)-1)
sumapi=sumapi+(num/den)
j+=1

return(4*sumapi)

4
Programación II
Docente: Juan Orlando Monsalve Rodríguez

#Casos de prueba
x=sumatoria(100)
print(x)
x=sumatoria(1000)
print(x)

Ejercicio 4
Hacer las funciones necesarias para que dado un valor real de x se calcule el valor de .

xi
e  1 
x

i 1 i!

Documentación de la Función
def potencia(b,e):
k=1
p=1
while(k<=e):
p=p*b
k+=1
return(p)

def factorial(num):
k=1
f=1
while(k<=num):
f=f*k
k+=1
return(f)

def sumatoriaEuler(x):
k=1
sumaE=0
while(k<=100):
num=potencia2(x,k)
den=factorial(k)
sumaE=sumaE+(num/den)
k+=1
return(sumaE+1)

#Casos de prueba

x=sumatoriaEuler(0)
print(x)
x=sumatoriaEuler(1)
print(x)

5
Programación II
Docente: Juan Orlando Monsalve Rodríguez

Ejercicio 5
Hacer las funciones necesarias para que dado un valor real de x en (grados) se calcule el valor de:

15
x 2 k 1
Seno( x )   (1) k
k 0 ( 2k  1)!

Para el cálculo del seno de x (x dado en radianes) (realmente las sumatorias son hasta infinito, pero para
efectos de programación se han acotado lo suficiente para que se puedan realizar los cálculos y que el
resultado sea aproximado al verdadero valor).

def potencia1(e): Documentación de la Función


p=-1
if((e%2)==0):
p=1

return(p)#potencia base -1

def potencia2(b,e):
k=1
p=1
while(k<=e):
p=p*b
k+=1
return(p) #potencia

def factorial(num):
k=1
f=1
while(k<=num):
f=f*k
k+=1
return (f) #factorial

def funcionSeno(x):
rad=(x*3.1415)/180 #grados*pi/180
k=0
sumas=0
while(k<30):
p1=potencia1(k)
num=potencia2(rad,2*k+1)
den=factorial(2*k+1)
sumas=sumas+(p1*num)/den
k+=1
return(sumas)

6
Programación II
Docente: Juan Orlando Monsalve Rodríguez

#Caso prueba
s=funcionSeno(0)
print(s)
s=funcionSeno(90)
print(s)
s=funcionSeno(180)
print(s)
s=funcionSeno(270)
print(s)

Ejercicios propuestos

1. Hacer una función que dado un X y un N calcule la siguiente sumatoria.


N
( x  1) 2 k
 ( 1) k
k 1 ( k  1)!

2. Hacer las funciones necesarias para que dado un valor real de x en (grados) se calcule el valor de:

15
x 2k
Cos( x )   ( 1)
k 0
k
( 2 k )!

Para el cálculo del coseno de x (x dado en radianes) (realmente las sumatorias son hasta infinito, pero para
efectos de programación se han acotado lo suficiente para que se puedan realizar los cálculos y que el
resultado sea aproximado al verdadero valor)

3. Hacer las funciones necesarias para que dado un valor real de x calcule el valor de:

2 k 1

1  x 1 
ln( x)  2  
k 0 2k  1 x  1 

b
k3  kk
4. Calcular la siguiente sumatoria
k a k 5 , para los valores de a y b dados (validando que “a” sea
k  0,k 5
mayor que “b”), y teniendo en cuenta que k no puede ser 5 pues generaría una división por cero, ni k puede
valer 0 pues cero a la cero es indefinido. También tenga en cuenta que la función potencia debe permitir
cálculos de potencias con exponentes negativos dado que k puede tener valores negativos

7
Programación II
Docente: Juan Orlando Monsalve Rodríguez

8
k 3  k k 43  44 63  66 73  77 83  88
Ejemplo si a= 4 y b=8 entonces k 4 k 5

45

65

75

85
k  0 ,k 5

Nota: Documentar la función en Jupyter NoteBooks de cada uno de los ejercicios propuestos.

También podría gustarte