| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1805 人关注过本帖
标题:判断三角形
只看楼主 加入收藏
若风001
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2013-11-3
收藏
得分:3 
我晕,我咋看不懂x1,x2,x3,y1,y2,y3是什么??
2013-11-03 19:15
shiner凡
Rank: 5Rank: 5
来 自:梦境
等 级:职业侠客
帖 子:92
专家分:355
注 册:2013-10-27
收藏
得分:3 
回复 11楼 若风001
楼主在这里应该是用来定义三角形3个点的坐标,可以从后面a、b、c的赋值式中判断出

多多看书,多多学习。C++神马的,将来我也要很厉害。亲爱的自己,加油加油!!!!!
2013-11-03 21:03
sc丶
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2013-11-3
收藏
得分:3 
把变量改成double类型,scanf中的%d也全部改成%lf就可以了

[ 本帖最后由 sc丶 于 2013-11-3 21:29 编辑 ]
2013-11-03 21:25
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:3 
输入的时候注意空格,格式跟scanf既定格式匹配。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-11-03 21:36
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
呃,各位还有没有别的方法判断三角形?

重剑无锋,大巧不工
2013-11-03 22:25
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不是吧?没人有不同的方法?这思维也太僵化了吧。

好吧,我再悬赏100分,关于楼主的问题,要更简单更高效的算法。只奖励第一个提交最简单高效代码或算法的(只要你的算法比之前的都高效,那你就是第一个)。

重剑无锋,大巧不工
2013-11-04 22:56
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
问题: 在平面上,给出3个坐标,判断是否能构成三角形
思路: 只要3个点不在一条线上就OK啦
算法: if ((y2-y1)/(x2-x1) == (y3-y2)/(x3-x2))

版主大大,可否

[ 本帖最后由 pycansi 于 2013-11-5 00:38 编辑 ]


莫问前尘有愧,但求今生无悔
2013-11-05 00:34
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
版主大大为了激励大家思考,倾情奉献100分,大家的脑袋快转起来吧


莫问前尘有愧,但求今生无悔
2013-11-05 00:43
Osiris9
Rank: 4
来 自:九柱
等 级:业余侠客
帖 子:28
专家分:225
注 册:2013-10-25
收藏
得分:0 
程序代码:
1.原先的方法(简化下写)
a = sqrt(a1 * a1 + b1 * b1)  【a1为(x1 - x2) * (x1 - x2),其他类似】
b = sqrt(a2 * a2 + b2 * b2)
c = sqrt(a3 * a3 + b3 * b3)
if(a + b > c && a + c > b && b + c > a)即可

2.任意不在同一位置的2点为一条直线,然后只要第3点到该直线的距离不为0即可
设三点a(x1, y1), b(x2, y2), c(x3, y3)
//不妨选取a, b连成直线(条件是不在同一点)
设直线y = kx + b
斜率k = (y2 - y1) / (x2 - x1)
任意代入一点(a, b两点任选一点,假设代入a)
y1 = ( (y2 - y1) / (x2 - x1) )x1 + b
即b = y1 - ( (y2 - y1) / (x2 - x1) )x1
则直线为y =  ( (y2 - y1) / (x2 - x1) )x + y1 - ( (y2 - y1) / (x2 - x1) )x1
转化为Ax + By + C = 0的形式
( (y2 - y1) / (x2 - x1) )x - y  + y1 - ( (y2 - y1) / (x2 - x1) )x1 = 0
即    kx - y +y1 - kx1 = 0 
接下来计算c(x3, y3)到直线的距离
d = abs(kx3 - y3 + y1 - kx1) / sqrt(k * k + 1) = abs( (x3 - x1)k + y1 - y3 ) / sqrt(k * k + 1)
显然可知,以上所有因子都可由已知条件直接获取....!
若d > 0 则是,否则不是
时间也不早了,粗略的算了一下
方法一大概执行45次运算,方法二大概执行11次运算,再加上判断a,b是否共点最多20左右不超过30次运算

干旱时死去................丰水时重生!
2013-11-05 01:23
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
以下是引用pycansi在2013-11-5 00:34:38的发言:

问题: 在平面上,给出3个坐标,判断是否能构成三角形
思路: 只要3个点不在一条线上就OK啦
算法: if ((y2-y1)/(x2-x1) == (y3-y2)/(x3-x2))

版主大大,可否

很不错,但其中有一个缺陷。消除它,这100分就是你的了。

回复19楼:

尝试改变思路就是好的。给予鼓励。但就这题而言,你又绕回去了。而且我很好奇“方法一大概执行45次运算,方法二大概执行11次运算”这两个数据是怎么统计出来的?

重剑无锋,大巧不工
2013-11-05 09:28
快速回复:判断三角形
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032910 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved