Aqui dejo el codigo fuente.
[csharp]int a = Int32.Parse(textbox1.Text);int b = Int32.Parse(textbox2.Text);
int c= Math.Sqrt((a*a)+(b*b));
textbox3.Text=ToString©;[/csharp]
Teorema de Pitagoras C#
Comenzado por
javsolis3
, mar 19 2012 06:38
1 respuesta en este tema
#1
Escrito 19 marzo 2012 - 06:38
#2
Escrito 23 marzo 2012 - 03:39
Hola,
Para ir entiendiendole la mano viene de 10. Solo quisiera aclarar una pequeña cosita: si se sometiera una implementación como esta forma a prueba con valores de punto flotante cercanos a cero o, en su defecto, cercanos al máximo permitido, arrojará un error de bajo desbordamiento o sobre desbordamiento.
En la práctica se utiliza un procedimiento matemático que evita estos desbordamientos. La mayoría de los lenguajes ya suelen tener una función que aplica estos conceptos. Se la suele conocer como Hypot.
El procedimiento por si alguien le interesa, vendría a ser algo es así:
AbsX = Abs(X)
AbsY = Abs(Y)
si AbsX > AbsY
entonces resultado = AbsX * sqrt(1.0 + sqr(AbsY/AbsX))
sino resultado = AbsY * sqrt(1.0 + sqr(AbsX/AbsY))
Disculpen, pero no se de C#.
Delphi en la unidad Math ya cuenta con una función Hypot(), similar a ese procedimiento. Lo que hace es intercambiar AbsX por AbsY en caso de ser mayor, y de ese modo no se necesita repetir el cálculo tanto para el mayor como el menor.
Saludos,
Para ir entiendiendole la mano viene de 10. Solo quisiera aclarar una pequeña cosita: si se sometiera una implementación como esta forma a prueba con valores de punto flotante cercanos a cero o, en su defecto, cercanos al máximo permitido, arrojará un error de bajo desbordamiento o sobre desbordamiento.
En la práctica se utiliza un procedimiento matemático que evita estos desbordamientos. La mayoría de los lenguajes ya suelen tener una función que aplica estos conceptos. Se la suele conocer como Hypot.
El procedimiento por si alguien le interesa, vendría a ser algo es así:
AbsX = Abs(X)
AbsY = Abs(Y)
si AbsX > AbsY
entonces resultado = AbsX * sqrt(1.0 + sqr(AbsY/AbsX))
sino resultado = AbsY * sqrt(1.0 + sqr(AbsX/AbsY))
Disculpen, pero no se de C#.
Delphi en la unidad Math ya cuenta con una función Hypot(), similar a ese procedimiento. Lo que hace es intercambiar AbsX por AbsY en caso de ser mayor, y de ese modo no se necesita repetir el cálculo tanto para el mayor como el menor.
Saludos,