VB:根据给定三条边得边长来判定图形的类型,若是三角形,则同时计算出为何种三角形,以及三角形面积

VB:根据给定三条边得边长来判定图形的类型,若是三角形,则同时计算出为何种三角形,以及三角形面积
这是我设计的程序
Private Sub Command1_Click()
Dim a As Single,b As Single,c As Single
a = Text1.Text
b = Text2.Text
c = Text3.Text
length = a And b And c
If a > 0 And b > 0 And c > 0 And a + b > c And b + c > a And a + c > b Then
Text4.Text = "是"
Select Case length
Case Is > 0 And a ^ 2 + b ^ 2 = c ^ 2,a ^ 2 + c ^ 2 = b ^ 2,b ^ 2 + c ^ 2 = a ^ 2,b ^ 2 + a ^ 2 = c ^ 2,c ^ 2 + a ^ 2 = b ^ 2,b ^ 2 + b ^ 2 = a ^ 2
Text5.Text = "直角三角形"
Case Is > 0 And a ^ 2 + b ^ 2 > c ^ 2,a ^ 2 + c ^ 2 > b ^ 2,b ^ 2 + c ^ 2 > a ^ 2
Text5.Text = "锐角三角形"
Case Is > 0 And a ^ 2 + b ^ 2 < c ^ 2,a ^ 2 + c ^ 2 < b ^ 2,b ^ 2 + c ^ 2 < a ^ 2
Text5.Text = "钝角三角形"
Case Else
Text5.Text = ""
End Select
ElseIf a 0 And a + b 0 And a + b > c And b + c > a And a + c > b Then
p = (a + b + c) / 2
s = Sqr(p * (p - a) * (p - b) * (p - c))
Text6.Text = s
End If
End Sub
但是关于三角形的形状总是谁在前就判断是谁,错误,
百川纳海 1年前 已收到1个回答 举报

随风狂潮 春芽

共回答了16个问题采纳率:93.8% 举报

Private Sub CommandButton1_Click()
Dim a!,b!,c!,p!,s!,tmp
a = Val(text1.Text) '转换为数字
b = Val(text2.Text)
c = Val(text3.Text)
'先从小到大排序 abc,利于后面判断
If a > b Then tmp = a:a = b:b = tmp
If a > c Then tmp = a:a = c:c = tmp
If b > c Then tmp = b:b = c:c = tmp
If a c ^ 2 Then
text5.Text = "锐角三角形"
Else
text5.Text = "钝角三角形"
End If
p = (a + b + c) / 2
s = Sqr(p * (p - a) * (p - b) * (p - c))
text6.Text = s
End If
End Su

1年前 追问

6

百川纳海 举报

我的case语句错了嘛?还是哪里错了?

举报 随风狂潮

select case 只能判断一个条件,而你想要他同时判断 A,B,C的值,肯定不行啊 举个例子: Case Is > 0 And a ^ 2 + b ^ 2 > c ^ 2, a ^ 2 + c ^ 2 > b ^ 2, b ^ 2 + c ^ 2 > a ^ 2 他判断的条件:length 的值,而 length= a And b And c ,其结果只有两种,true、false 即只能设置两个case, case true case false 而你上面那句的结果 Is > 0 And a ^ 2 + b ^ 2 > c ^ 2, a ^ 2 + c ^ 2 > b ^ 2, b ^ 2 + c ^ 2 > a ^ 中, 既有true又有false,就是把length 的结果全部包含进去了, 其他的几个case都是一样,都把length 的结果全部包含了, 所以无论那个case都肯定是成立的, select的只会运算第一个成立的case,所以你的问题出现了: “总是谁在前就判断是谁”
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.022 s. - webmaster@yulucn.com