總和檢查
請檢查一個數列中,尋找任兩個數字相加後的和是否會等於輸入的檢查值。
例如,有一個數列為8,20,27,17,13,28,35,31,若輸入的檢查值為48,會找到20及28兩個數,相加的和為48;反之若輸入的檢查值為50,則會找不到配對的數字。
輸入說明:
輸入之第一列為下一列數列中的個數,第二列為數列資料。每個數字與數字間的區隔為一個空白符號。第三列及以後的資料為輸入的檢查值,每一列有一個檢查值,當為0時表示結束。
輸入範圍:
輸入的數列最少有2個數字,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。
輸入範例:test2.txt
8
8 20 27 17 13 28 35 31
48
50
59
0
輸出說明:
每個檢查值有一個輸出結果,若有匹配的檢查值,則輸出為1,反之為-1。
輸出範例:result2.txt
1
-1
1
額外說明:
1.請每人在貼上來的程式裡,form_load()或form_activate()中的第一行要加上,
form.hide
最後一行要加上,
end
,也就是說,執行時,什麼都看不到,也會自動結束。
2.這幾個星期,原則以每星期2題,主要利用星期六日來做。
3.學科考試以總複習的第4章全部。所以,全部的題目都要做,輔導課結束,拿給我檢查,當然,如果有不懂的題目也可以問的。
熊掌
老師 做完 是拿給你 還是直接貼這邊就好?
回覆刪除Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, AA
ReDim n(AA) As Integer
Line Input #1, strA
b = Split(strA, " ")
For i = 1 To AA
n(i) = Val(b(i - 1))
Next i
Do
Input #1, Qu
Qu = Val(Qu)
If Qu = 0 Then Exit Do
ans = -1
For i = 1 To AA
For j = i To AA
sumA = n(i) + n(j)
If sumA = Qu Then
ans = 1
GoTo isN
End If
Next j
Next i
isN:
Print #2, ans
Loop
Close #2
Close #1
End
End Sub
Dim dat(100) As Integer
回覆刪除Dim ans As Boolean
Private Sub Form_Load()
Me.Hide
Open App.Path & "\test2.txt" For Input As #1
Open App.Path & "\result2.txt" For Output As #2
Input #1, qq
For i = 1 To qq
Input #1, step
dat(i) = step
Next i
Do
Input #1, countdat
If countdat = 0 Then Exit Sub
ans = False
For i = 1 To qq
k = 1
Do Until k = qq
sumstep = dat(i) + dat(k)
If countdat = sumstep Then
ans = True
Exit For
End If
k = k + 1
Loop
Next i
If ans Then
Print #2, 1
Else
Print #2, -1
End If
Loop
Close #1
Close #2
End
End Sub
Dim ch(100) As Integer
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, n
For i = 1 To n
Input #1, ch(i)
Next i
Do
Input #1, x
If x = 0 Then Exit Do
ans = False
For i = 1 To n
For j = 1 To n
If ch(i) + ch(j) = x And ch(i) <> ch(j) Then
ans = True
Exit For
End If
Next j
Next i
If ans Then
Print #2, 1
Else
Print #2, -1
End If
Loop
End
Close #1
Close #2
End Sub
小白好,
回覆刪除1.用ReDim n(aa) as integer,是正確的,但是,其實不用那麼麻煩,還是直接定義最大值就好了。
dim n(100) as integer
2.你用Qu = Val(Qu)來轉換,也可以用dim qu as integer,就是先定義變數,不要是string或是Variant就好了。(哦,還有日期、布林..)
3.程式應該OK。
阿揚好,
1.還是在這兒交就行了,學科的,才需要當面交給我吧。輔導課結束哦。8/6左右。
2.你用exit sub,那麼最後的close #1/close #2/end這3行會執行到嗎?(應該是不會哦)
3.你的程式也OK。
阿瑋好,
1.你的程式也OK。
2. if ch(i) + ch(j) = x and ch(i) <> ch(j) then 後面的條件改成i <> j比較好。雖然這題強調每個數字都不同,所以你的寫法也不會有錯。
高仔呢?
我有跟 高仔 說喔=O=
回覆刪除老師 你說學科!?
是我們要自己印下來寫,在交給你嗎??
阿揚好,
回覆刪除學科就寫在書上就好,輔導課完,再拿書給我看吧。
Dim a(100) As Integer
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "/in.txt" For Input As #1
Open App.Path & "/out.txt" For Output As #2
Input #1, x
For i = 1 To x
Input #1, a(i)
Next i
Do While Not EOF(1)
Input #1, b
If b = 0 Then Exit Sub
ans = -1
For i = 1 To x - 1
For j = 2 To x
If a(i) + a(j) = b And i <> j Then ans = 1
Next j
Next i
Print #2, ans
Loop
Close #2
Close #1
End
End Sub
高仔好,
回覆刪除這題寫的很清晰,很好。我喜歡,加油哦。