Buenas, estoy empezando a darle caña a C como mi primer lenguage.
El problema es: (no me lo plantea nadie, estoy por libre)
A partir de 3 datos recibidos por el usuario (longitus de los lados de un triangulo) determinar que tipo de triangulo se forma.
El programa me funciona pero seguramente habré cometido barbaridades con los goto y tanto "if". Mi idea es conseguir un código eficiente y legible.
El problema es: (no me lo plantea nadie, estoy por libre)
A partir de 3 datos recibidos por el usuario (longitus de los lados de un triangulo) determinar que tipo de triangulo se forma.
El programa me funciona pero seguramente habré cometido barbaridades con los goto y tanto "if". Mi idea es conseguir un código eficiente y legible.
Código (c) [Seleccionar]
#include <stdio.h>
int main()
{
float a;
float b;
float c;
printf( "Introduce el primer lado: " );
scanf( "%f", &a );
printf( "Introduce el tercer lado: " );
scanf( "%f", &b );
printf( "Introduce el segundo lado: " );
scanf( "%f", &c );
printf( "Los lados valen %f, %f y %f \n", a, b, c);
if (a == b && b == c)
{
if (a==0){
goto notr;
}
printf("El triangulo es equilatero");
goto end;
notr:
printf("\nLos datos proporcionados no forman un triángulo");
goto end;
}
if (a>b && a>c){
if (a >= (b + c)) goto notr;
printf( "El primer lado dado, %f, es ", a);
if (b*b+c*c==a*a) printf("la hipotenusa, por lo \nque ls triangulo es rectángulo\n");
else if (b == c) printf ("el mayor, y los otros \nson iguales por lo que el triángulo es isóceles\n");
else printf ("el mayor, y el triángulo es escaleno\n");
}
else if (b>c && b>a){
if (b >= (a + c)) goto notr;
printf( "El segundo lado dado, %f, es ", b);
if (a*a+c*c==b*b) printf("la hipotenusa, por lo \nque el triangulo es rectángulo\n");
else if (a == c) printf ("el mayor, y los otros \nson iguales por lo que el triángulo es isóceles\n");
else printf ("el mayor, y el triángulo es escaleno\n");
}
else if (c>b && c>a){
if (c >= (b + a)) goto notr;
printf( "El tercer lado dado, %f, es ", c);
if (b*b+a*a==c*c) printf("la hipotenusa, por lo \nque el triangulo es rectángulo\n");
else if (b == a) printf ("el mayor, y los otros \nson iguales por lo que el triángulo es isóceles\n");
else printf ("el mayor, y el triángulo es escaleno\n");
}
end:
return 0;
}