s1Eva_IT2008_T2 Criba de Eratóstenes con Python

Ejercicio: 1Eva_IT2008_T2 Criba de Eratóstenes

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

Llenar un arreglo de marcas o tachado con la hipótesis que todos son primos(1).

# PROCEDIMIENTO
marcado = np.zeros((n+1),dtype=int)
# hipotesis: todos son primos
criba = 2
while (criba<=n):
    marcado[criba] = 1
    criba = criba+1

La prueba de hipótesis consiste en usar un indicador para el número de criba, y otro indicador i para anular marcando con cero (0) las posiciones de los múltiplos.

Inicie eliminando los múltiplos de 2, para luego cambiar a los múltiplos de 3, etc.

Mostrar como resultado solo aquellos números mantienen en marcas válidas (1).

Tarea: Analizar si es necesario hacer funcionar el algoritmo de la prueba de hipótesis hasta n o un número menor. Realizar la validación que n sea mayor que 1.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2008_T2 Criba de Eratóstenes
# Propuesta: edelros@espol.edu.ec

import numpy as np

# INGRESO
n = int(input('primos menores que: '))

# PROCEDIMIENTO
marcado = np.zeros((n+1),dtype=int)

# hipotesis: todos son primos
criba = 2
while (criba<=n):
    marcado[criba] = 1
    criba = criba+1

# no son primos los múltiplos 
criba = 2
while (criba<=n):

    # revisa el primer múltiplo
    i = criba * 2
    while (i<=n):
        marcado[i] = 0
        i = i + criba
    criba = criba+1

# SALIDA
criba = 2
while (criba<=n):
    if marcado[criba]==1:
        print(criba)
    criba = criba+1

resultado del algoritmo

primos menores que: 30
2
3
5
7
11
13
17
19
23
29
>>> 

diagrama de flujo Criba de Eratóstenes 01

diagrama de flujo Criba de Eratóstenes 02

diagrama de flujo Criba de Eratóstenes 03


Otra forma de plantear el algoritmo

# 1ra Evaluación I Término 2008
# Tema 2. Criba de Eratóstenes
import numpy as np

# INGRESO
n = int(input('cuantos numeros analiza: '))

# PROCEDIMIENTO
# vector de números naturales
natural = np.zeros(n, dtype=int)
posicion =  0
while not(posicion>=n):
    natural[posicion] = posicion
    posicion = posicion +1

# hipotesis todos cumplen
cumple = np.ones(n,dtype = int)

# Tarea: analiza cada posición
posicion = 2
# elimina multiplos / no cumplen
contador = 2
tacha  = posicion *contador
while not(tacha>(n-1)):
    tacha  = posicion *contador
    if tacha<(n-1):
        cumple[tacha] = 0
    contador = contador +1

# SALIDA
# solo valores de la posicion 2 en adelante
print(natural[2:])
print(cumple[2:])

mostrando el siguiente resultado:

cuantos numeros analiza: 50
[ 2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
 38 39 40 41 42 43 44 45 46 47 48 49]
[1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1]
>>> 

ejercicios resueltos Python 1eva_it2008_t2 pdf

ejercicios resueltos Matlab 1eva_it2008_t2 pdf

s1Eva_IT2008_T1 Teorema de Wilson

Ejercicio1Eva_IT2008_T1 Teorema de Wilson

Se usa el concepto de residuo de la división para determinar si el número es primo. La bandera usada es «esprimo» que inicia con el supuesto de ser verdadero ó 1.

Solo si el número resulta ser primo, se aplican las operaciones de Wilson

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2008_T1 Teorema de Wilson

# INGRESO
n = int(input('ingrese numero primo: '))
while not(n>0):
    n = int(input('ingrese numero positivo: '))

# PROCEDIMIENTO

# revisa esprimo 
esprimo = 1
divisor = 2
while not(divisor>=n or esprimo==0):
    r = n%divisor
    if (r == 0):
        esprimo = 0
    divisor = divisor + 1

wilson = -1
if esprimo == 1:
    
    # factorial
    factor = 1
    i = 1
    while not(i>=n):
        factor = factor*i
        i = i + 1
    
    # revisa Wilson 
    residuo = (factor + 1) % n
    if residuo == 0:
        wilson = 1
    else:
        wilson = 0

# SALIDA
print('cumple Wilson: ', wilson)

resultado del algoritmo

ingrese numero primo: 7
cumple Wilson:  1
>>> 
== RESTART: D:\Ejemplos\unprograma.py ==
ingrese numero primo: 13
cumple Wilson:  1
>>> 
== RESTART: D:\Ejemplos\unprograma.py ==
ingrese numero primo: 8
cumple Wilson:  -1
>>> 

s2Eva_IIT2007_T4 Fibonacci recursiva

Ejercicio: 2Eva_IIT2007_T4 Fibonacci recursiva

Propuesta de solución en Python: py_pdf, también en versión matlab : m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2007_T4 Fibonacci recursiva
# Propuesta: edelros@espol.edu.ec

def fibo(i):
    if (i==1) or (i==2):
        z = 1
    if i>2:
        z = fibo(i-1)+fibo(i-2)
    return (z)

# PROGRAMA

# INGRESO
m = int(input('valor acumulado?:'))

# PROCEDIMIENTO
s = 0
i = 1
while (s<=m):
    s = s + fibo(i)
    i = i + 1

# SALIDA
print('total de terminos:', i)
print('total acumulado:', s)

resultado del algoritmo

valor acumulado?:50
total de terminos: 9
total acumulado: 54
>>> 
valor acumulado?:60
total de terminos: 10
total acumulado: 88
>>> 

ejercicios resueltos Python 2eva_iit2007_t4 pdf

ejercicios resueltos Matlab 2eva_iit2007_t4 pdf

s2Eva_IIT2007_T2 Juego de memotest

Ejercicio: 2Eva_IIT2007_T2 Juego de memotest

Video Tutorial:

Instrucciones en Python

# 2Eva_IIT2007_T2 Juego de memotest
# propuesta: edelros@espol.edu.ec
import numpy as np
import random as rnd

def tableroparejas(n):
    fichasunicas = (n*n)//2
    tablero = np.zeros(shape=(n,n),dtype =int)

    i = 1
    while i<=fichasunicas:
        f1 = int(rnd.random()*n)+0
        c1 = int(rnd.random()*n)+0
        while not(tablero[f1,c1]==0):
            f1 = int(rnd.random()*n)+0
            c1 = int(rnd.random()*n)+0
        tablero[f1,c1] = i
        f2 = int(rnd.random()*n)+0
        c2 = int(rnd.random()*n)+0
        while not(tablero[f2,c2]==0):
            f2 = int(rnd.random()*n)+0
            c2 = int(rnd.random()*n)+0
        tablero[f2,c2] = i
        i = i + 1
    return(tablero)

# PROGRAMA
# INGRESO
n = 4

# PROCEDIMIENTO
tablero = tableroparejas(n)
descubiertas = np.zeros(shape=(n,n),dtype=int)
equivocado = 0
encontrado = 0
while (equivocado<3 and encontrado<(n*n)):
    
    print('estado del juego:')
    print(descubiertas)

    f1 = int(input('fila ficha1:'))
    c1 = int(input('columna ficha1:'))
    while not(descubiertas[f1,c1]==0):
        f1 = int(input('fila ficha1:'))
        c1 = int(input('columna ficha1:'))

    f2 = int(input('fila ficha2:'))
    c2 = int(input('columna ficha2:'))
    while not(descubiertas[f2,c2]==0):
        f2 = int(input('fila ficha2:'))
        c2 = int(input('columna ficha2:'))

    ficha1 = tablero[f1,c1]
    ficha2 = tablero[f2,c2]

    if ficha1==ficha2:
        descubiertas[f1,c1] = ficha1
        descubiertas[f2,c2] = ficha2
        encontrado = encontrado + 2
        print('ENCONTRO una pareja..!',ficha1,ficha2)
    else:
        equivocado = equivocado + 1
        print('Las fichas son diferentes: ',ficha1,ficha2)

# SALIDA
print('Solucion del tablero:')
print(tablero)
print('Estado del juego:')
print(descubiertas)
if encontrado==(n*n):
    print(' Muy bien..!! todas las fichas encontradas')
else:
    print('Perdió... se equivoco el máximo de veces...')
    print('fichas descubiertas:', encontrado)

Tarea: Revisar que las coordenadas ingresadas por el jugador se encuentren dentro del tablero.

Resultado del Algoritmo

estado del juego:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
fila ficha1:0
columna ficha1:0
fila ficha2:1
columna ficha2:1
Las fichas son diferentes:  4 1
estado del juego:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
fila ficha1:0
columna ficha1:0
fila ficha2:2
columna ficha2:2
Las fichas son diferentes:  4 6
estado del juego:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
fila ficha1:0
columna ficha1:0
fila ficha2:3
columna ficha2:3
Las fichas son diferentes:  4 2
Solucion del tablero:
[[4 8 3 4]
 [3 1 1 5]
 [6 7 6 7]
 [5 2 8 2]]
Estado del juego:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
Perdió... se equivoco el máximo de veces...
fichas descubiertas: 0
>>> 

Algoritmo realizado en diagrama de flujo, Archivo matlab en pdf

 

ejercicios resueltos Matlab 2eva_iit2007_t2 pdf

s1Eva_IIT2007_T3 Garantías de prestamos IESS

Ejercicio: 1Eva_IIT2007_T3 Garantías de prestamos IESS

Propuesta de solución en Pythonpy_pdf, también en versión matlab: m_pdf

Para el ejemplo, por simplicidad se usan cédulas de 3 dígitos; también se supone que no existen elementos repetidos dentro de cada arreglo.

i reserva(i)
1 987
2 876
3 765
4 654
n
j cesantia(j)
1 876
2 765
3
..
m

En la nota se indica que las listas de las cédulas de los afiliados tienen tamaño diferente, además el ingreso de datos es separado por tener origen de datos diferentes.

# INGRESO

# datos de afiliados con fondo de reserva
n = int(input('Afiliados con Fondo de Reserva: '))
freserva = np.zeros(n+1,dtype=int)
i = 1
while not(i>n):
    print(i)
    freserva[i] = input('ingrese cedula:')
    i = i + 1

Al inicio del algoritmo, se supondrá que ningún afiliado cumple con los requisitos, por lo que se usa un arreglo de banderas de cumple o no cumple  (1 ó 0).

# Hipotesis: Ninguno cumple requisito
cumple = np.zeros(n+1,dtype=int)

Realizar una búsqueda ordenada de números de cédula:
– para cada cédula de reserva[i] con n elementos
– realizar una búsqueda en el arreglo de cesantía[j] para los m elementos.

Repetir el proceso, marcando el arreglo de banderas, cumple, cada vez que se encuentra un valor repetido entre ambas listas.

Tarea: Realizar el ejercicio, construyendo un tercer arreglo con solamente los elementos que cumplen con la condición.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2007_T3 Garantías de prestamos IESS
# propuesta: edelros@espol.edu.ec

import numpy as np

# INGRESO

# datos de afiliados con fondo de reserva
n = int(input('Afiliados con Fondo de Reserva: '))
freserva = np.zeros(n+1,dtype=int)
i = 1
while not(i>n):
    print(i)
    freserva[i] = input('ingrese cedula:')
    i = i + 1

# datos de afiliados con cesantía
m = int(input('Afiliados con Cesantia: '))
cesantia = np.zeros(m+1,dtype=int)
j = 1
while not(j>m):
    print(j)
    cesantia[j] = input('ingrese cedula:')
    j = j + 1

# PROCEDIMIENTO

# Hipotesis: Ninguno cumple requisito
cumple = np.zeros(n+1,dtype=int)

# Revisa listado buscando iguales
total = 0
i = 1
while not(i>n):
    j = 1
    while not(j>m or cumple[i]==1):
        if freserva[i]==cesantia[j]:
            cumple[i] = 1
            total = total + 1
        j = j + 1
    i = i + 1

# SALIDA: Muestra cedulas de los que cumplen requisito
print('Cumplen requisitos:')
print(total)
print('listado: ')
i = 1
while not(i>n):
    if (cumple[i]==1):
        print(freserva[i])
    i = i + 1

ejemplo de resultado del algoritmo

Afiliados con Fondo de Reserva: 3
1
ingrese cedula:123
2
ingrese cedula:234
3
ingrese cedula:345
Afiliados con Cesantia: 2
1
ingrese cedula:123
2
ingrese cedula:345
Cumplen requisitos:
2
listado: 
123
345
>>> 

Diagrama de Flujo

ejercicios resueltos Python 1eva_iit2007_t3 pdf

ejercicios resueltos Matlab 1eva_iit2007_t3 pdf

s1Eva_IIT2007_T2 Juego de la Ruleta

Ejercicio: 1Eva_IIT2007_T2 Juego de la Ruleta

Propuesta de solución en Python : py_pdf, también en versión matlab: m_pdf.

La simulación de la ruleta se realiza con la generación de un número entero aleatorio entre 1 y 37.

ruleta = int(rnd.random()*37)+1

Para desarrollar el ejercicio, inicie resolviendo para un solo jugador y un solo intento y mostrando si ganó o no.

Luego continúe incorporando la cantidad de intentos para un solo jugador,

Incorpore la petición de apuestas de los jugadores, antes de hacer rotar la ruleta en un arreglo o lista, para luego poder determinar los resultados de ganadores.

    # Ingreso de apuestas
    j = 1
    while (j<=n):
        print('jugador (',j,') ')
        apuesta[j] = int(input('  número apostado: '))
        j = j

Puede usar contadores para el número de veces ganó cada jugador en los m intentos.

Siguiendo el esquema anterior podrá resolver el ejercicio para todas las rondas con todos los jugadores.

Tarea: Completar el algoritmo para el número que salió la menor cantidad de veces.

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2007_T2 Juego de la Ruleta
# Propuesta: edelros@espol.edu.ec

import numpy as np
import random as rnd

# INGRESO
n = int(input('¿cuántos jugadores?: '))
m = int(input('¿cuántas rondas?: '))

gana    = np.zeros(n+1, dtype=int)
apuesta = np.zeros(n+1, dtype=int)

ronda = 1
while (ronda<=m):

    # Ingreso de apuestas
    j = 1
    while (j<=n):
        print('jugador (',j,') ')
        apuesta[j] = int(input('  número apostado: '))
        j = j + 1

    ruleta = int(rnd.random()*37)+1
    print('Número ruleta: ', ruleta)

    # Revisa ganadores
    j = 1
    while (j<=n):
        if (ruleta==apuesta[j]):
            gana[j] = gana[j]+1   
        j = j + 1
         
    ronda = ronda + 1

# SALIDA
print('Los resultados son:')
j = 1
while (j<=n):
    print(' jugador(',j,') ganó ',gana[j],' veces \n')
    j = j + 1

Tarea: validar que el número de la apuesta esté en el tablero.

un ejemplo de ejecución:

cuantos jugadores: 2
cuantas rondas: 2
jugador ( 1 ) 
  número apostado: 3
jugador ( 2 ) 
  número apostado: 24
Número ruleta:  36
jugador ( 1 ) 
  número apostado: 34
jugador ( 2 ) 
  número apostado: 12
Número ruleta:  34
Los resultados son:
 jugador( 1 ) ganó  1  veces 

 jugador( 2 ) ganó  0  veces 

>>> 

Diagrama de Flujo

ejercicios resueltos Python 1eva_iit2007_t2 pdf

ejercicios resueltos Matlab 1eva_iit2007_t2 pdf

s1Eva_IIT2007_T1 Hormiga busca arroz

Ejercicio: 1Eva_IIT2007_T1 Hormiga busca arroz

Algoritmo con un paso por cada turno

Considere ingresar la ubicación inicial (xh,yh) de la hormiga y que la posición del arroz (xa,ya) sea fija.

Suponga que la hormiga no ha encontrado el grano de arroz, se encuentran distantes.

Para la dirección del movimiento de la hormiga  se genera un número aleatorio usado para cambiar un valor de coordenada de la hormiga.

Luego se revisa si la hormiga encontró el grano de arroz al comparar que  las coordenadas sean iguales

Cuente un turno completado, y repita el procedimiento hasta que se completen los 100 turnos o se haya encontrado el grano de arroz. Al final muestre los resultados requeridos.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2007_T1 Hormiga busca arroz
import random as rnd

# INGRESO
xa=int(input(' x arroz: '))
ya=int(input(' y arroz: '))

xh=int(input(' x hormiga: '))
yh=int(input(' y hormiga: '))

# PROCEDIMIENTO
encontro = 0
t = 0
while not((xh==xa and yh==ya) or t>100):
    
    # dirección de movimiento de hormiga
    d = int(rnd.random()*4)+1
    
    if (d==1):
        yh = yh+1
    if (d==2):
        yh = yh-1
    if (d==3):
        xh = xh+1
    if (d==4):
        xh = xh-1

    # Revisa si lo encontró
    if (xh==xa and yh==ya):
        encontro = 1
    t = t + 1

print('¿encontró?: ')
print(encontro)
print('pasos realizados: ')
print(t)

Ejemplo de respuesta con el algoritmo

 x arroz: 5
 y arroz: 3
 x hormiga: 4
 y hormiga: 2
¿encontró?: 
1
pasos realizados: 
34
>>> 

 x arroz: 8
 y arroz: 8
 x hormiga: 3
 y hormiga: 2
¿encontró?: 
0
pasos realizados: 
101

Algoritmo con varios pasos por turno

Al ejercicio anterior se le añade una variable «pasos» para que mediante un aleatorio sea diferente en cada turno.

Usando lazo Mientras-Repita:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random as rnd
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO

# posición del arroz fija
xa = 10
ya = 8

# distancia inicial
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)

encontrado = 0
turno = 0
while (turno<100 and encontrado==0):
    
    direccion = int(rnd.random()*4)+1
    pasos = int(rnd.random()*3)+1

    if direccion==1:
        yh = yh + pasos
    if direccion==2:
        yh = yh - pasos
    if direccion==3:
        xh = xh + pasos
    if direccion==4:
        xh = xh - pasos
        
    if (xh==xa and yh==ya):
        encontrado = 1

    distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if distancia>dmayor:
        dmayor = distancia
        
    turno = turno + 1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)

Resultado del algoritmo:

coordenada x hormiga: 2
coordenada y hormiga: 1
estado encontrado: 
1
turnos simulados: 
92
distancia más lejana: 
23.323807579381203
>>> 
coordenada x hormiga: 0
coordenada y hormiga: 0
estado encontrado: 
0
turnos simulados: 
100
distancia más lejana: 
38.2099463490856
>>> 

En la solución con Python, se usarán las librerías básicas de aleatorios (random) y matemáticas (math). Una alternativa a esta solución es usar la librería numérica Numpy que se descarga e instala como un módulo complementario.

El ejercicio mostrado usando diagramas de flujo:

Usando lazo Repita-Hasta:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random as rnd
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO

# posición del arroz fija
xa = 10
ya = 8

# distancia inicial
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)

encontrado = 0
turno = 0
while not(turno>=100 or encontrado!=0):
    
    direccion = int(rnd.random()*4)+1
    pasos = int(rnd.random()*3)+1
    
    if direccion==1:
        yh = yh + pasos
    if direccion==2:
        yh = yh - pasos
    if direccion==3:
        xh = xh + pasos
    if direccion==4:
        xh = xh - pasos
        
    if (xh==xa and yh==ya):
        encontrado = 1

    distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if distancia>dmayor:
        dmayor = distancia

    turno = turno+1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)

ejercicios resueltos Python 1eva_iit2007_t1 pdf

ejercicios resueltos Matlab 1eva_iit2007_t1 pdf

s2Eva_IT2007_T1 Funciones par e impar recursivas

Ejercicio: 2Eva_IT2007_T1 Funciones par e impar recursivas

Propuesta de solución en Python: py_pdf, también en versión matplab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2007_T1 Funciones par e impar
# Propuesta: edelros@espol.edu.ec

import random as rnd

def impar(n):
    if (n==0):
        z = 0
    if (n>0):
        z = par(n-1)
    return (z)

def par(n):
    if (n==0):
        z = 1
    if (n>0):
        z = impar(n-1)
    return (z)


# PROGRAMA Par/Impar Recursiva

# INGRESO
n = int(input('cuantos números?: '))

# PROCEDIMIENTO
c = 0
i = 1
while not(i>n):
    a = int(rnd.random()*41)+10
    r = par(a)
    if (r==1):
        c = c + 1
    i = i + 1
if c>(n/2):
    z = 1
else:
    z = 0

# salida
print(' El resultado de mayoría pares es: ')
print(z)

resultado del algoritmo

cuantos números?: 100
 El resultado de mayoría pares es: 
1
>>> 
cuantos números?: 100
 El resultado de mayoría pares es: 
0
>>> 

ejercicios resueltos Python 2eva_it2007_t1 pdf

ejercicios resueltos Matlab 2eva_it2007_t1 pdf

s1Eva_IT2007_T1 Tiro al blanco con dardos

Ejercicio: 1Eva_IT2007_T1 Tiro al blanco con dardos

Propuesta de solución en Python: python en pdf,
también en version matlab en pdf

Sea un punto aleatorio representado por sus valores en x, y en el rango del cuadrado que contiene a los círculos.

    x = (rnd.random()*160)-80
    y = (rnd.random()*160)-80

Se utiliza acumuladores de premios para cada franja de color, cuyo valor se determina mediante la comparación de la distancia del punto (x,y) al centro u origen del plano.

 d = math.sqrt(x**2+y**2)

Se repite el procedimiento para los n puntos, para al final mostrar el valor acumulado de premio.

Nota: Discutir sobre la validación de dardos en los límites (frontera, borde) del círculo.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2007_T1 Juego Tiro al Blanco con Dardos
# Propuesta solucion: edelros@espol.edu.ec

import random as rnd
import math

# INGRESO
n = int(input('numero de dardos: '))

# PROCEDIMENTO
premio = 0
i = 0
while (i<n):
    x = (rnd.random()*160)-80
    y = (rnd.random()*160)-80
    d = math.sqrt(x**2+y**2)

    if (d<10):
        premio = premio + 50
    if (d>=10 and d<40):
        premio = premio + 40
    if (d>=40 and d<80):
        premio = premio + 30

    i = i+1

# SALIDA
print(' El total ganado es:')
print(premio)

Respuesta del algoritmo

numero de dardos: 10
 El total ganado es:
280
>>> 
numero de dardos: 10
 El total ganado es:
220
>>> 

Diagrama de Flujo Mientras-Repita

diagrama de flujo Tiro al blanco con dardos 01diagrama de flujo Tiro al blanco con dardos 02

 


Desarrollo con lazo repita-hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación I Término 2007 - 2008
# Tema 1. Tiro al blanco
# Propuesta solucion: edelros@espol.edu.ec

import random as rnd
import math

n = int(input('numero de dardos: '))

# PROCEDIMIENTO
premio = 0
i = 0
while not(i>=n):
    x = (rnd.random()*160)-80
    y = (rnd.random()*160)-80
    d = math.sqrt(x**2+y**2)

    if (d<10):
        premio = premio+50
    if (d>=10 and d<40):
        premio = premio+40
    if (d>=40 and d<80):
        premio = premio+30

    i = i+1

# SALIDA
print(' El total ganado es:')
print(premio)

Diagrama de Flujo Repita-Hasta

diagrama de Flujo Tiro al blanco con dardos 03

diagrama de flujo Tiro al blanco con dardos 04

ejercicios resueltos Python 1eva_it2007_t1 pdf

ejercicios resueltos Matlab 1eva_it2007_t1 pdf

s2Eva_IT2006_T3 Encriptar a Morse

Ejercicio: 2Eva_IT2006_T3 Encriptar a Morse

# 2Eva_IT2006_T3 Encriptar a Morse

def morse_numero(numero):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]

    # separa los digitos
    digitos = []
    while numero>0:
        residuo = numero%10
        cociente = numero//10
        digitos.append(residuo)
        numero = cociente
        
    # equivalente en morse
    m = len(digitos)
    cadena = ""
    j = 0
    while (j<m):
        espacio = ' '
        if j == 0:
            espacio = ''
        cadena = equivale[digitos[j]] + espacio + cadena
        j=j+1
    return (cadena)

def numero_morse(cadena):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]
    # separa cadena
    partes = cadena.split(' ')
    # construye numero
    numero = 0
    m = len(partes)
    for i in range(0,m,1):
        digito = equivale.index(partes[i])
        numero = numero*10+digito
    
    return(numero)

# Tarea, realizar el menú requerido.

resultado del algoritmo

>>> morse_numero(12)
('..-. ..-',)
>>> numero_morse('..-. ..-')
12
>>>