Ejercicio: 1Eva_IT2007_T1 Tiro al blanco con dardos
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
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
La distancia al centro del tablero se determina como:
d = math.sqrt(x**2+y**2)
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.
if (d<10): premio = premio + 50 if (d>=10 and d<40): premio = premio + 40 if (d>=40 and d<80): premio = premio + 30
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.
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
..
Algoritmo en Python: Mientras-Repita
# 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 >>>
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
..
Diagrama de Flujo: Mientras-Repita
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
Algoritmo en Python: 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)
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
..
Diagrama de Flujo: Repita-Hasta
mientras-repita: [ algoritmo ] [ diagrama flujo ]
repita-hasta: [ algoritmo ] [ diagrama flujo ]
Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab