纯属散分:给定三边长度,判断是否是一个三角形

lw549 2008-09-01 01:57:46
给自己找个散分的理由。
我知道这是个初中数学问题,但你能写出一份合格的代码吗?

IsTriAngle(a,b,c: Integer): boolean;

请任意发挥:)
分数平分,just for fun.
...全文
564 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
junon 2010-07-19
  • 打赏
  • 举报
回复
先排序
然后最小两边之和大于最大的 AND 最小最大的差小于中间的
快乐江米 2008-09-16
  • 打赏
  • 举报
回复
我的竟然只得了6分?
lw549 2008-09-05
  • 打赏
  • 举报
回复
参与的人不多,结贴了。
快乐江米 2008-09-04
  • 打赏
  • 举报
回复
应该这样:
......
var
a,b,c:integer;
d:Real;
begin
a:=StrToInt(edt1.Text) ;
b:=StrToInt(edt2.Text) ;
c:=StrToInt(edt3.Text) ;
d:=(a+b+c) / 2;
if (a<d)and(b<d)and(c<d) then lbl1.Caption:='是三角形' //每条边都要小于三边和的一半。
else
lbl1.Caption:='不是三角形';
end;








end;
yinxu 2008-09-04
  • 打赏
  • 举报
回复
要是仅仅就是三条线,无连接,无闭合,我不知道大家仅仅根据线的长度怎么判断!
lyguo 2008-09-04
  • 打赏
  • 举报
回复
粗心打错了,也不让修改,真是。
function IsTriAngle(a,b,c: Integer): boolean;
begin
result:=((a>0) and (b>0) and (c>0)) and ((a+b>c) or ((a+c>b) or (b+c>a)) ;
end;

三边都得大于零,且任有两连只和大于第三连就成。
lyguo 2008-09-04
  • 打赏
  • 举报
回复
function IsTriAngle(a,b,c: Integer): boolean;
begin
result:=((a>0) and (b>0) and (c>0)) and ((a+b>c) or ((a+c>b) and (b+c>a)) ;
end;

三边都得大于零,且任有两连只和大于第三连就成。
快乐江米 2008-09-04
  • 打赏
  • 举报
回复
由三条线段首尾相接,围成的图形叫做三角形。
呵呵。
日总是我哥 2008-09-04
  • 打赏
  • 举报
回复
瞻仰楼上这位牛人
lw549 2008-09-04
  • 打赏
  • 举报
回复
瞻仰楼上各位牛人,对你们的幽默感深感佩服。
zhao_auau 2008-09-04
  • 打赏
  • 举报
回复
给定三边长度,判断是否是一个三角形 ????
题目有问题,都已给定三边啦,还判断是不是三角形???
难道三边还可以组成四边形???
budded 2008-09-03
  • 打赏
  • 举报
回复
给三边长度,只能判断能否组成三角形吧??
万一,三条线在四维空间里永不相交呢???
阿弥陀佛!
yf110 2008-09-03
  • 打赏
  • 举报
回复
看看热闹,接个分
zhoutian618 2008-09-03
  • 打赏
  • 举报
回复
分数平分?
接分。
JeffChung 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 yangkunjie 的回复:]
看看热闹,接个分
[/Quote]
lw549 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 MaoMaoDelphi 的回复:]
这样的问题也能放上来??晕,二边之和是否大于第三边,这样的算法也可以讨论?
[/Quote]

呵呵,都说了,是找个散分的理由,你那么较真做什么。
wxmwxmwxm 2008-09-02
  • 打赏
  • 举报
回复
接分
MaoMaoDelphi 2008-09-02
  • 打赏
  • 举报
回复
这样的问题也能放上来??晕,二边之和是否大于第三边,这样的算法也可以讨论?
gzmhero 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 lw549 的回复:]
引用 27 楼 gzmhero 的回复:
引用 25 楼 lw549 的回复:
引用 17 楼 zhuminghua 的回复:
引用 12 楼 lw549 的回复:
提示:加法会导致溢出。

那就先求出最大两个数,相减小于最小的那个数,就是三角形了

思路完全正确。


如果仅仅是加法溢出的问题,那这样处理看看。(没考虑精度问题)

result:=(a/2+b/2>c/2) and (a/2+c/2>b/2) and (b/2+c/2>a/2);



精度是个不可忽视的问题,a=b=…
[/Quote]

?????????a=b=c=1,result:=(1/2+1/2>1/2) AND .....,返回是 true
a=b=2,c=1,Result:=(2/2+2/2>1/2) and ......返回是ture 也没错。

这里由于除数都是2,精度误差似乎反映不出,没仔细验证,如果考虑精度问题,那就

e:=0.000001;
Result:=(a/2+b/2-c/2>e) and ...........即可。
lw549 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 gzmhero 的回复:]
引用 25 楼 lw549 的回复:
引用 17 楼 zhuminghua 的回复:
引用 12 楼 lw549 的回复:
提示:加法会导致溢出。
 
那就先求出最大两个数,相减小于最小的那个数,就是三角形了

思路完全正确。


如果仅仅是加法溢出的问题,那这样处理看看。(没考虑精度问题)

result:=(a/2+b/2>c/2) and (a/2+c/2>b/2) and (b/2+c/2>a/2);

[/Quote]

精度是个不可忽视的问题,a=b=c=1或a=b=2,c=1的情况就挂了。
加载更多回复(32)

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧