本帖最后由 虫洞 于 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
|