Problem A

三角形

时间限制:1000 ms  |  内存限制:65535 KB
 
描述

在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形;如果可以组成三角形,那么我们还可以求出这个三角形的面积。作为一个大学生,如果给你三个点的坐标,你能快速判断出这三个点能组成一个三角形吗?如果可以组成三角形,你能快速求出三角形的面积吗?

 
输入
第一行输入一个整数N(1 ≤ N ≤ 100),表示有N组测试数据。 接下来有N行,每行包括六个数x1,y1,x2,y2,x3,y3,分别代表三个点的坐标。 (0 ≤ x1,y1,x2,y2,x3,y3 ≤ 15)
输出
根据点的坐标判断这三个点能不能组成一个三角形,如果可以组成三角形,输出这个三角形的面积,结果保留3位小数;否则,输出“Can not form a triangle.”。
样例输入
3
0 0 1 1 2 0
0 0 1 0 2 0
0 0 0 2 2 0
样例输出
1.000
Can not form a triangle.
2.000
来源
原创
上传者
李远航
几何题,运用到行列式....
  设:三角形ABC三个顶点是A(x1,y1)、B(x2,y2)、C(x3,y3)则:三角形ABC的面积是:.    
| x1 y1 |
M= | x2 y2 |.
| x3 y3 |
最后的面积是:S=|M|

只要是涉及到几何知识,数学问题一定要考虑精度....

代码如下:

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
struct point
{
double x,y;
}po[];
int main()
{
int n,i;
scanf("%d",&n);
while(n--)
{
for(i=;i<;i++)
{
scanf("%lf%lf",&po[i].x,&po[i].y);
}
/*由行列式求解*/
double area1=(/2.0)*(po[].x*po[].y+po[].x*po[].y+po[].y*po[].x-po[].y*po[].x-po[].y*po[].x-po[].x*po[].y);
if(area1<)area1*=-1.0;
if(area1>1e-)
{
/*area1=0.0005;*/
printf("%.3lf\n",area1);
}
else
printf("Can not form a triangle.\n");
}
return ;
}

最新文章

  1. Android之列表索引
  2. TSQL语句
  3. sql传入组合字符串批量操作
  4. JAVA CAS原理
  5. 将Excel中数据导入数据库(一)
  6. Android Activity 阻止软键盘自动弹出
  7. jQuery中的bind绑定事件与文本框改变事件的临时解决方法
  8. jBPM - jBPM Installer
  9. android NDK 开发步骤
  10. 【JAVA得知】struts2 于 Actionsupport 任务
  11. 性能优化实战案例——助力某移动OA系统
  12. PyQt QFontDialog显示中文
  13. 作业2——英语学习APP的案例分析
  14. 【CSS3】布局
  15. VNPY - windows 安装踩坑记录
  16. 软件151 王楚博 maven的导入
  17. Dart 创建List
  18. python前后端加密方式
  19. 继上篇后的Excel批量数据导入
  20. Java Thread.yield详解

热门文章

  1. 日期时间篇asctime ctime gettimeofday gmtime localtime mktime settimeofday time
  2. 非常优秀的iphone学习文章总结!
  3. libuv之介绍
  4. 关于asp.net页面缓存
  5. Best Time to Buy and Sell Stock II leetcode java
  6. 15 款JavaScript 热门图形图表库
  7. WebRequest多线程 超时问题
  8. C# GDI+技术
  9. CoCreateInstance(转)
  10. 整数划分问题--DFS