紜曦 發問時間: 電腦與網際網路程式設計 · 1 0 年前

一個程式題目> <”...急用

有n個同學(n為偶數),兩人一組,共分成 n/2組。令n/2個同學之體重總和為{S1,S2,……Sn},m為體重總和之平均值m=[( )/n],分組的原則為必須使得 m|之差距總和為最小。

(輸出結果的差距若非為最小,則本題算錯,零分計算。)寫一程式完成此分組工作。

輸入說明:第一列為學生人數n,(4≦n≦20)。

第二列到第n+1列為學生的體重。(30≦學生的體重≦150)

輸入範例:假定有10個同學,其體重分別為:82、53、74、84、45、46、57、67、43、47。

實際輸入之檔案(test4.txt)內容如下:

10

82

53

74

84

45

46

57

67

43

47

輸出說明:列印出每組同學之體重總和及個別體重,且必須依體重總和由大而小印出。

實際輸出之檔案(result4.txt)內容如下:

127 = 43 + 84

127 = 45 + 82

120 = 46 + 74

114 = 47 + 67

110 = 53 + 57

1 個解答

評分
  • W.J.S.
    Lv 7
    1 0 年前
    最佳解答

    Private Sub Command1_Click()        Dim A() As Integer, I As Integer, J As Integer, T As Integer, Ts As String                '將C:\Text4.txt讀入A()        T = FreeFile        Open "C:\Text4.txt" For Input As #T        Do Until EOF(T)           ReDim Preserve A(I)           Line Input #T, Ts           A(I) = Val(Ts): I = I + 1        Loop        Close #T                '從A(1)~UBound(A)做由小至大之排序        For I = 1 To UBound(A)            For J = I To UBound(A)                If A(I) > A(J) Then                   T = A(I): A(I) = A(J): A(J) = T                End If            Next        Next                'J為學生人數        J = A(0)                '建立B陣列記錄每一組之體重和及S陣列記錄每一組之體重和之運算式        ReDim B(J \ 2 - 1) As Integer, S(J \ 2 - 1) As String                '頭跟尾組合成一組,如:1-10,2-9,3-8,4-7,5-6        For I = 1 To J / 2            '記錄體重和            B(I - 1) = A(I) + A(J)            '記錄體重和之運算式            S(I - 1) = "=" & A(I) & "+" & A(J)            J = J - 1        Next                '體重和由大至小做排序        For I = 0 To UBound(B)            For J = I To UBound(B)                If B(I) < B(J) Then                   N = B(I): B(I) = B(J): B(J) = N                   Ts = S(I): S(I) = S(J): S(J) = Ts                End If            Next        Next                '輸出至C:\Result4.txt        T = FreeFile        Open "C:\Result4.txt" For Output As #T        For I = 0 To UBound(B)            Print #T, CStr(B(I)); S(I)        Next        Close #T        MsgBox "已輸出至C:\Result4.txt"End Sub

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