請幫我解這個程式~謝謝^^

歌唱大賽5位歌者進入總決賽,有10位評審參與評分工作,但每位歌者所獲得的10位評審分數中,要先去掉最高分與最低分在平均才是歌者的得分,試寫一程式記錄10位評審給5位歌者的分數,最後在計算每位歌者的得分

3 個解答

評分
  • 匿名使用者
    2 0 年前
    最佳解答

    UML 魔人的方法比較慢 (要 loop 3 次), 我的修改如下:

    Me.AutoRedraw = True

    Dim avg As Double, sum As Integer, max As Integer, min As Integer, i As Integer, cnt As Integer, score As Integer

    min = 9999

    max = 0

    sum = 0

    cnt = 9

    For i = 0 To cnt

    score = Val(InputBox("請輸入第" & i + 1 & "位評審給的得分"))

    Print "第" & i + 1 & "位評審的評分為" & score

    if score < min then min = score

    if score > max then max = score

    sum = sum + score

    Next

    sum = sum - min

    sum = sum - max

    avg = sum / (cnt- 1)

    Print "最高評分為 : " & max

    Print "最低評分為 : " & min

    Print "平均評分為 : " & avg

    • Commenter avatar登入以對解答發表意見
  • 2 0 年前

    給compmad﹕

    你的演法﹐對會問這樣問題的人來說﹐

    思考層級高了許多﹐可能會消化不良。

    以當多年槍手的經驗而言﹐ UML魔人的比較適合交作業。

    以寫程式多人的經驗而言﹐你的程式比較好。

    • Commenter avatar登入以對解答發表意見
  • 匿名使用者
    2 0 年前

    Me.AutoRedraw = True

    Dim arr(9) As Integer

    Dim avg As Double, sum As Integer, max As Integer, min As Integer, i As Integer, cnt As Integer

    For i = 0 To 9

    arr(i) = Val(InputBox("請輸入第" & i + 1 & "位評審給的得分"))

    Print "第" & i + 1 & "位評審的評分為" & arr(i)

    Next

    min = arr(0)

    max = arr(0)

    cnt = 0

    For i = 0 To 9

    If arr(i) < min Then min = arr(i)

    If arr(i) > max Then max = arr(i)

    Next

    Print "最高評分為 : " & max

    Print "最低評分為 : " & min

    For i = 0 To 9

    If arr(i) <> min And arr(i) <> max Then

    cnt = cnt + 1

    sum = sum + arr(i)

    End If

    Next

    avg = sum / cnt

    Print "平均評分為 : " & avg

    2004-12-31 16:28:10 補充:

    問題1

     min = 9999

     max = 0

     在沒有限定條件的情況下 , 這樣無法處理所有的可能性 ex. 輸入值沒有小於 9999 的值,或是沒有大於 0的值

    問題2

     >>要先去掉最高分與最低分在平均才是歌者的得分

    你確定這程式符合這條件嗎??

    當最高分及最低分有兩個以上時呢??

    我這段寫的不是很好,直接看他給的順序2,3分鐘霹靂趴拉出來的,但當作業應該夠了吧=o=

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。