习题3-5 三角形判断 (15 分)
浙大版《C语言程序设计(第3版)》
题目
给定平面上任意三个点的坐标(x1 ,y1)、(x2 ,y2 )、(x3 ,y3 ),检验它们能否构成三角形。
输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2 、y2 、x3 、y3 。
输出格式:
若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
输入样例1:
输出样例1:
输入样例2:
输出样例:
#include<stdio.h>
#include<math.h>
int main ()
{
double x1,y1,x2,y2,x3,y3;
double a1,a2,a3,b1,b2,b3;
double c,d,e,m,n,p,q,s;
scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
a1=x2-x1;
a2=x3-x1;
a3=x3-x2;
b1=y2-y1;
b2=y3-y1;
b3=y3-y2;
c=sqrt(a1*a1+b1*b1);
d=sqrt(a2*a2+b2*b2);
e=sqrt(a3*a3+b3*b3);
if((c-d)<e && (c+d)>e)
{
// printf("1");
// printf("L = %.2f",c+d+e);
m=c+d+e;
n=c+d-e;
p=c+e-d;
q=d+e-c;
s=sqrt(m*n*p*q);
printf("L = %.2f, A = %.2f",c+d+e,s/4.00);
}
else
{
printf("Impossible");
}
// printf("%d %d %d",c,d,e);
return 0;
}