找回密码
 加入
搜索
查看: 4734|回复: 8

[效率算法] 已知四边形ABCD的边长AB,BC,CD,DA,以及面积S,求AC的长度

  [复制链接]
发表于 2013-7-4 17:52:29 | 显示全部楼层 |阅读模式
本帖最后由 虫洞 于 2013-7-5 12:09 编辑


已知四边形ABCD的边长AB,BC,CD,DA,以及面积S,求AC的长度。
举个实际例子,已知AB=15,BC=16,CD=17,DA=18,四边形ABCD的面积为260,求AC的长度。(如果结果有两个,解出两个)

程序要求,输入变量$a、$b、$c、$d,以及面积$s,求出AC的长度,答案有三种,1.无解、2.一个解、3.两个解


我只能做出一各解的答案,请教各位大牛,如何完美考虑到三种情况,我的程序只能解出一各解,我把我的答案隐藏,大家发挥一下。
$AB = 15;a
$BC = 16;b
$CD = 17;c
$DA = 18;b
$S = 260;四边形ABCD的面积
$TEM = 100
Dim $cc
For $c = 10 To 30 Step 0.001
        $sx = san($AB,$BC,$c)+san($CD,$DA,$c)
        If Abs(($S-$sx)) < $TEM Then 
                $TEM = $S-$sx
                $cc = $c
        EndIf
Next
$sx = san($AB,$BC,$cc)+san($CD,$DA,$c)
InputBox(0,'最小面积差为:'&$TEM,'AC的边长为:'&$cc)
Func san($a,$b,$c);三角形面积计算
        Return 0.25*Sqrt(($a+$b+$c)*($a+$b-$c)*($a-$b+$c)*($c-$a+$b))
EndFunc
发表于 2013-7-4 19:15:42 | 显示全部楼层
这中学题目拿出来给网友做?
 楼主| 发表于 2013-7-5 00:24:48 | 显示全部楼层
这中学题目拿出来给网友做?
xlj310 发表于 2013-7-4 19:15



    听口气有点狂,只可惜了,你连初中题目都不会做
发表于 2013-7-5 00:54:23 | 显示全部楼层
稍微修改一下,变成两个解求法。
$AB = 15;a
$BC = 16;b
$CD = 17;c
$DA = 18;b
$S = 260;四边形ABCD的面积
$TEM1 = 0
Dim $jie[2],$n = 0
For $c = 10 To 30 Step 0.001
        $sx = san($AB,$BC,$c)+san($CD,$DA,$c)
        $TEM2 = $S-$sx
        If $TEM1 * $TEM2 < 0 Or $TEM2 = 0 Then 
                If Abs($TEM1) > Abs($TEM2) Then 
                        $jie[$n] = $c
                Else
                        $jie[$n] = $c - 0.001
                EndIf
                $n += 1
        EndIf
        $TEM1 = $TEM2
        If $n = 2 Then ExitLoop
Next
MsgBox(0,0,'解1:AC边长为:'&$jie[0]&@CRLF&'解2:AC边长为:'&$jie[1])
Func san($a,$b,$c);三角形面积计算
        Return 0.25*Sqrt(($a+$b+$c)*($a+$b-$c)*($a-$b+$c)*($c-$a+$b))
EndFunc

评分

参与人数 1金钱 +10 收起 理由
虫洞 + 10

查看全部评分

发表于 2013-7-5 08:33:36 | 显示全部楼层
包括凹四边形的情况吗
 楼主| 发表于 2013-7-5 09:40:56 | 显示全部楼层
包括凹四边形的情况吗
netegg 发表于 2013-7-5 08:33



    蛋蛋兄,不包括
发表于 2013-7-5 11:12:04 | 显示全部楼层
类似于三角形面积中的海伦公式:设三条边a,b,c,面积S=√[p(p-a)(p-b)(p-c)], p=(a+b+c)/2 为半周长.圆内接四边形的四条边为a,b,c,d.有个Brahmagupta公式,其面积S=√[(p-a)(p-b)(p-c)(p-d)],

p=(a+b+c+d)/2 为半周长.

    对于普通四边形,如果其一对内角和为θ,由于四边形的内角和为360度,因此另一对内角和为360-θ。 由Bretschneider公式,此四边形面积S=√[(p-a)(p-b)(p-c)(p-d)-abcdcos^2(θ/2)]。
 楼主| 发表于 2013-7-5 12:15:25 | 显示全部楼层
类似于三角形面积中的海伦公式:设三条边a,b,c,面积S=√, p=(a+b+c)/2 为半周长.圆内接四边形的四条边为a, ...
netegg 发表于 2013-7-5 11:12



    不知AU3语言如何表述
发表于 2013-7-6 09:22:13 | 显示全部楼层
exe的帮助里有海伦公式的函数
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-25 00:46 , Processed in 0.078360 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表