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
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
ejercicios resueltos Python 1eva_it2007_t1 pdf
ejercicios resueltos Matlab 1eva_it2007_t1 pdf