判断是否是直角三角形的算法研究
任意给出3点坐标(平面),判断是否构成直角三角形。
我的想法:首先计算出三条边的长度,再判断是否满足三角形要求,若满足再判断是否是直角三角形
主要问题:在计算各边长时,必然要开方,导致不精确,这会导致判断是否为直角三角形时出错。
我的解决办法:在判断是否直角三角形是并不一定需要每条边的长度,知道其平方也可以,于是在计算没边长度的时候不开方就能解决直角判断问题。
还有的问题:但是仍然要先判断其是否是三角形,此时就需要每条边的具体长度,虽然此时对精度要求不是很高,但当遇到一些特意设计的数据时可能会处错误。鉴于此,鄙人特拿来与诸兄研究研究。
以下是我设计的代码,供大家参考,其中fun0()负责计算每边长度的平方,fun1()负责判断是否为三角形,fun2()负责判断是否为直角三角形。
#include"stdio.h"
#include"math.h"double fun0(double x1,double y1,double x2,double y2);
int fun1(double a,double b,double c);
int fun2(double a,double b,double c);int main()
{double a[3][2],x,y,z;int i,j;for(i=0,j=0;i<3;i++)for(j=0;j<1;j++)scanf("%lf%lf",&a[j],&a[j+1]);x=fun0(a[0][0],a[1][0],a[0][1],a[1][1]);y=fun0(a[0][0],a[2][0],a[0][1],a[2][1]);z=fun0(a[1][0],a[2][0],a[1][1],a[2][1]);
// printf("%.2lf %.2lf %.2lf\n",x,y,z);if(fun1(x,y,z))if(fun2(x,y,z))printf("%d\n",1);elseprintf("%d\n",0);elseprintf("%d\n",0);}
//计算两点距离
double fun0(double x1,double y1,double x2,double y2)
{//返回每条边的平方(开方会有误差)return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
}
//判断是否三角
int fun1(double a,double b,double c)
{//有误差没关系,但还是需要改进a=sqrt(a);b=sqrt(b);c=sqrt(c);if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&b-a<c&&a-c<b&&c-a<b&&b-c<a&&c-b<a)return 1;elsereturn 0;
}
//判断是否直角
int fun2(double a,double b,double c)
{if(a+b==c || a+c==b || b+c==a)return 1;elsereturn 0;
}
判断是否是直角三角形的算法研究相关推荐
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
(七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者:July--结构之法算法之道blog之博主. 时间:2010年10月-201 ...
- 关于二维码分块上色(彩色二维码)的算法研究
原文:关于二维码分块上色(彩色二维码)的算法研究 众所周知,二维码通常是黑白的,而且是由若干个长方形或正方形小块平铺而成.但从人们的审美角度来看,常见的黑白二维码不免让人审美疲劳.本文试着从分块上色的 ...
- 遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法
关注数学,关注AI,关注我们公众号ID:Math-AI 经典算法研究系列 遗传算法 1 初探遗传算法 Ok,先看维基百科对遗传算法所给的解释: 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法 ...
- 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上
经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong 二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...
- 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树4大经典原创系列集锦与总结 作者:July--结构之法算法之道blog之博主. 时间:2010年10月-2011年6月. 出处:http://blog.csdn. ...
- 基于深度学习的场景分割算法研究综述
基于深度学习的场景分割算法研究综述 人工智能技术与咨询 来自<计算机研究与发展> ,作者张 蕊等 摘 要 场景分割的目标是判断场景图像中每个像素的类别.场景分割是计算机视觉领域重要的基本问 ...
- 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
本文由July 发表在他的博客中,原文参见http://blog.csdn.net/v_JULY_v/archive/2011/01/12/6132775.aspx,对遗传算法分析的很透彻,是学习算法 ...
- 空间中的语义直线检测_基于语义分割的车道线检测算法研究
龙源期刊网 http://www.qikan.com.cn 基于语义分割的车道线检测算法研究 作者:张道芳 张儒良 来源:<科技创新与应用> 2019 年第 06 期 摘 ; 要:随着半自 ...
- 逻辑回归模型算法研究与案例分析
逻辑回归模型算法研究与案例分析 (白宁超 2018年9月6日15: 21:20) 导读:逻辑回归(Logistic regression)即逻辑模型,属于常见的一种分类算法.本文将从理论介绍开始,搞清 ...
最新文章
- Knowledge Point 20180305 数据在计算机中的表示
- 机器学习-斯坦福:学习笔记6-朴素贝叶斯
- 直播这把“火”,还能烧多久?
- python列表功能默写_Python list(列表)功能详解
- openfire学习4---android客户端聊天开发之聊天功能开发
- 1112: 进制转换(函数专题)
- ASP.NET MVC5 与EF6学习系列
- python3 enumerate()函数笔记
- 批处理(bat)实现SQLServer数据库备份与还原
- Tuple and Tie
- postgres复制数据库
- C Tricks(十一)—— 排除一个二维数组的边界
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
- C语言基础入门(经典收藏)
- Intel Optane 内存个人安装与使用步骤 Dell 灵越
- 工作流Activiti 6.x
- shell蚂蚁森林_和“蚂蚁森林”的融合
- html格式如何转换mp4视频,html怎样用格式工厂转换成mp4
- 计算机之父ppt,24计算机之父童年的故事.ppt
- 求购二手《良葛格Java JDK 5.0学习笔记》