Estoy haciendo un ejercicio que pide que introduzca 3 valores de tipo float y que determine si los números pueden representar los lados de un triangulo recto.
Intento hacer la comparación mediante el teorema de pitagoras, pero no se como sacar la raíz cuadrada en el ultimo paso, lo debo sacar sin usar usar pow, ni tampoco la función sqrt(x), debido a que son temas que todavía no veo en el libro :-\.
Links en "mensajes similares" abajo del post:
http://foro.elhacker.net/programacion_cc/raiz_cuadrada_en_c-t320138.0.html
http://foro.elhacker.net/programacion_cc/ayuda_novato_raiz_cuadrada_en_c_sin_sqrt-t404341.0.html
Saludos.
Puedes intentar A = RAIZ( B^2 + C^2 ) o bien puedes probar con A^2 = B^2 + C^2
Moraleja: No necesitas calcular la raiz cuadrada... simplemente hacer la comprobación
if ( abs( A^2 - B^2 - C^2 ) < 1e-4 ) { /* A,B,C son los vértices de un triángulo rectángulo */ }
Ups... tienes mucha razon xD.
y yo que hice todo esto para hacer una comprobacion:
#include <stdio.h>
int main (){
float lado1, lado2, lado3;
float hipotenusa, r, t;
printf("Introduzca medida1: ");
scanf("%f", &lado1);
while (lado1 != -1){
printf("Introduzca medida2: ");
scanf("%f", &lado2);
printf("Introduzca medida3: ");
scanf("%f", &lado3);
if (lado1 == 0 || lado2 == 0 || lado3 == 0){
printf("introduzca un valor correcto\n\n");
}
else if (lado1 > lado2 && lado1 > lado3){
hipotenusa = (lado2 * lado2) + (lado3 * lado3);
r = hipotenusa;
t = 0;
while (t != r){
t = r;
r = (hipotenusa/r + r)/2;
}
if (lado1 == r){
printf("forma triangulo recto, la hipotenusa es %f\n", r);
}
else{
printf("No se forma triangulo recto\n");
}
}
else if (lado2 > lado1 && lado2 > lado3){
hipotenusa = (lado1 * lado1) + (lado3 * lado3);
r = hipotenusa;
t = 0;
while (t != r){
t = r;
r = (hipotenusa/r + r)/2;
}
if (lado2 == r){
printf("forma triangulo recto, la hipotenusa es %f\n\n", r);
}
else{
printf("No se forma triangulo recto\n\n");
}
}
else if (lado3 > lado1 && lado3 > lado2){
hipotenusa = (lado1 * lado1) + (lado2 * lado2);
r = hipotenusa;
t = 0;
while (t != r){
t = r;
r = (hipotenusa/r + r)/2;
}
if (lado3 == r){
printf("forma trinagulo recto, la hipotenusa es %f\n\n", r);
}
else{
printf("No se forma triangulo recto\n\n");
}
}
else{
printf("No se forma un triangulo recto\n\n");
}
printf("Introduzca medida1, (-1 para terminar): ");
scanf("%f", &lado1);
}
system ("pause");
return 0;
}
Gracias! lo hare como tu me dices para hacer mas corto el programa.