Práctico 1: Ejercicio 12 - parte2

Re: Práctico 1: Ejercicio 12 - parte2

de Luis Sierra -
Número de respuestas: 0
hola alexis,

tu código es razonable, salvo por el valor absoluto. decidiste usar el valor absoluto para evitar un error de ejecución, pero no estudiaste por qué se daba ese error de ejecución.

Supongamos que los datos de entrada fueran 0, 0 y -2. entonces, s habría tomado el valor -1, y la expresión (s * (s-a) * (s-b) * (s-c)) habría tomado el valor -1. entonces, al calcular la raíz de -1 da error. pero esos datos que tomamos son espúreos; no hay ningún triángulo que tenga lados sin extensión, o de largo negativo.

es cierto, hay casos que da error; pero el problema sería si hay triángulos cuya área no puedo computar de esa manera. estudiar eso es un tema interesante, pero no trivial. al final, donde dice PRUEBA, hay un argumento para justificar esta situación. en este ejercicio, esperamos que puedas realizar el trabajo que hiciste (sin el abs). de paso, estás viendo que lo importante no es que un programa no se rompa; lo importante es que un programa cuyos datos de entrada son razonables, no se rompe.

de hecho, es bueno que un programa se rompa si los datos de entrada no son adecuados. sino, estaríamos devolviendo papafritas. pero definitivamente, esto debe quedar para más adelante.

saludos, buena pregunta.

luis

----------

PRUEBA
queremos probar que

si a > 0, b > 0, c > 0 (los lados miden algo)
y a < b + c, b < a + c, c < a + b (supongamos, en el primer caso, que trazo un segmento de largo a, y haciendo centro en sus extremos, en un caso con distancia b y en otro con c, consigo hacer un triangulo; entonces, es necesario que a < b + c. y lo mismo para los otros dos casos)
la expresión debajo de la raíz es positiva. veremos que todos los factores son positivos.

por la primera condición, sabemos que s > 0.

supongamos ahora que s - a < 0. entonces:
s - a < 0
==> ((a+b+c)/2) - a < 0
==> b+c < a, absurdo porque b+c > a.

y lo mismo con s-b y s-c. luego, es un producto de positivos, y la raíz se calcula sobre un número positivo. si el triángulo es uno de los que conocemos, no habrá problema.