Ejercicios: 1Eva_IIT2014_T2 Triángulos aleatorios en rectángulo
Propuesta de solución en Python, también se adjunta el diagrama en pdf
Para iniciar el ejercicio, se requiere la cantidad n de triángulos a generar y los límites del plano donde se generan [maxa,maxb]
Para cada triángulo se generan las coordenadas de los vértices (xi,yi), usando números aleatorios ajustados a los límites del plano.
Lo más importante para este ejercicio es determinar las distancias entre los vértices, pues con ellas se determina el tipo de triángulo, siguiento las reglas básicas de la geometría.
Puede darse el caso que los puntos se encuentren en una sola línea en el plano, el caso se verifica al revisar si la suma de la longitud de dos lados es la longitud del tercer lado. Comprobar en todas las combinaciones ésta situación.
Instrucciones en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL # 1Eva_IIT2014_T2 Triángulos aleatorios en rectángulo # Propuesta de solución: edelros@espol.edu.ec import numpy as np import random as rnd import matplotlib.pyplot as plt # INGRESO n = int(input(" cuántos triángulos: ")) maxa = int(input(" rango lado a: ")) maxb = int(input(" rango lado b: ")) # PROCEDIMIENTO equilatero = 0 isosceles = 0 escaleno = 0 colineal = 0 i = 1 while (i<=n): # puntos aleatorios x1 = int(rnd.random()*maxa) +0 y1 = int(rnd.random()*maxb) +0 x2 = int(rnd.random()*maxa) +0 y2 = int(rnd.random()*maxb) +0 x3 = int(rnd.random()*maxa) +0 y3 = int(rnd.random()*maxb) +0 # distancias entre puntos a = np.sqrt((x2-x1)**2 + (y2-y1)**2) b = np.sqrt((x3-x2)**2 + (y3-y2)**2) c = np.sqrt((x1-x3)**2 + (y1-y3)**2) # realiza la gráfica de cada triángulo plt.plot([x1, x2], [y1, y2]) plt.plot([x2, x3], [y2, y3]) plt.plot([x1, x3], [y1, y3]) # clasifica triángulos s1 = a + b s2 = b + c s3 = c + a if (s1==c or s2==a or s3==b): colineal = colineal + 1 else: if (a==b and b==c): equilatero = equilatero+1 else: if (a!=b and b!=c and c!=a): escaleno = escaleno+1 else: isosceles = isosceles+1 i=i+1 # SALIDA print("equilateros: ") print(equilatero) print("escalenos: ") print(escaleno) print("isosceles: ") print(isosceles) print("colineales: ") print(colineal) # muestra la gráfica plt.show()
Resultado del algoritmo
cuántos triángulos: 100 rango lado a: 10 rango lado b: 10 equilateros: 0 escalenos: 90 isosceles: 4 colineales: 6 >>> cuántos triángulos: 100 rango lado a: 10 rango lado b: 10 equilateros: 0 escalenos: 87 isosceles: 6 colineales: 7 >>>