Problem :
Triangle Types
Adapted by Neilor Tonin, URI Brazil
Timelimit: 1
Read 3 double numbers (A, B and C) representing the sides of a triangle and arrange them in decreasing order, so that the side A is the biggest of the three sides. Next, determine the type of triangle that they can make, based on the following cases always writing an appropriate message:
- if A ≥ B + C, write the message: NAO FORMA TRIANGULO
- if A2 = B2 + C2, write the message: TRIANGULO RETANGULO
- if A2 > B2 + C2, write the message: TRIANGULO OBTUSANGULO
- if A2 < B2 + C2, write the message: TRIANGULO ACUTANGULO
- if the three sides are the same size, write the message: TRIANGULO EQUILATERO
- if only two sides are the same and the third one is different, write the message: TRIANGULO ISOSCELES
Input
The input contains three double numbers, A (0 < A) , B (0 < B) and C (0 < C).
Output
Print all the classifications of the triangle presented in the input.
Sample Inputs | Sample Outputs |
7.0 5.0 7.0 | TRIANGULO ACUTANGULO TRIANGULO ISOSCELES |
6.0 6.0 10.0 | TRIANGULO OBTUSANGULO TRIANGULO ISOSCELES |
6.0 6.0 6.0 | TRIANGULO ACUTANGULO TRIANGULO EQUILATERO |
5.0 7.0 2.0 | NAO FORMA TRIANGULO |
6.0 8.0 10.0 | TRIANGULO RETANGULO |
Solution:
#include<stdio.h>
int
main()
{
double
a[4], temp;
int
i , j;
for
(i=0; i<3; i++)
scanf
(
"%lf"
,&a[i]);
for
(i=0; i<3; i++) {
for
(j=i; j<3; j++) {
if
(a[0]<a[j]) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
if
(a[0]>=a[1]+a[2]){
printf
(
"NAO FORMA TRIANGULO\n"
);
exit
(0);
}
if
(a[0]*a[0]==((a[1]*a[1])+(a[2]*a[2])))
printf
(
"TRIANGULO RETANGULO\n"
);
if
(a[0]*a[0]>((a[1]*a[1])+(a[2]*a[2])))
printf
(
"TRIANGULO OBTUSANGULO\n"
);
if
(a[0]*a[0]<((a[1]*a[1])+(a[2]*a[2])))
printf
(
"TRIANGULO ACUTANGULO\n"
);
if
(a[0]==a[1] && a[1]==a[2])
printf
(
"TRIANGULO EQUILATERO\n"
);
if
((a[0]==a[1] && a[0]!=a[2]) || (a[1]==a[2] && a[1]!=a[0]) || (a[0]==a[2] && a[0]!=a[1]))
printf
(
"TRIANGULO ISOSCELES\n"
);
return
0;
}
No comments:
Post a Comment