Ejercicio 16
- Enunciado
Realizar un programa que permita conocer de qué tipo es un triángulo en función de los lados (escaleno, isósceles o equilátero) y en función de los ángulos (rectángulo, acutángulo u obtusángulo), conocido los vértices que se introducirán por teclado.
- Codigo
from math import *
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print(bcolors.HEADER, "Introduce las cordenadas de A")
xa = eval(input(bcolors.OKBLUE))
ya = eval(input(bcolors.OKBLUE))
print(bcolors.ENDC)
print(bcolors.HEADER, "Introduce las cordenadas de B")
xb = eval(input(bcolors.OKBLUE))
yb = eval(input(bcolors.OKBLUE))
print(bcolors.ENDC)
print(bcolors.HEADER, "Introduce las cordenadas de C")
xc = eval(input(bcolors.OKBLUE))
yc = eval(input(bcolors.OKBLUE))
print(bcolors.ENDC)
def distancia(x1, y1, x2, y2):
return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2))
def maximos_minimos(a, b, c):
maximo = max(a, b, c)
if max == a:
cat1 = b
cat2 = c
elif max == b:
cat1 = a
cat2 = c
else:
cat1 = a
cat2 = b
return maximo, cat1, cat2
def tipo_lados(a, b, c):
if a+b+c == 180:
return "El tipo de triangulo segun sus lados es equilatero"
elif a == c and a != b and c != b:
return "El tipo de triangulo segun sus lados es isosceles"
else:
return "El tipo de triangulo segun sus lados es escaleno"
def tipo_angulos(a, b, c):
a2 = round(pow(a, 2), 6)
b2 = round(pow(b, 2), 6)
c2 = round(pow(c, 2), 6)
if a2 > b2 + c2:
return "El tipo de triangulo segun sus angulos es Obtusangulo"
elif a2 < b2 + c2:
return "El tipo de triangulo segun sus angulos es Acutangulo"
else:
return "El tipo de triangulo segun sus angulos es Rectangulo"
AB = distancia(xa, ya, xb, yb)
AC = distancia(xa, ya, xc, yc)
BC = distancia(xb, yb, xc, yc)
h, c1, c2 = maximos_minimos(AB, AC, BC)
print (bcolors.OKCYAN,tipo_lados(AB,AC,BC), bcolors.ENDC)
print (bcolors.OKBLUE,tipo_angulos(h, c1, c2), bcolors.ENDC)
print(bcolors.ENDC)