Ejercicios: 1Eva2014TII_T2 Triángulos aleatorios en rectángulo

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.
# 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
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, siguiendo las reglas básicas de la geometría.
# 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)
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.
Algoritmo 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
>>>
Diagrama de Flujo


