第23講 数独を解くソフトVer.1の制作
第10話 並び替え(昇順・降順)Subプロシージャの再帰的呼び出し解答例
ダウンロード用参考ファイル
再帰的呼び出し課題解答例
降順(大きい順)の場合
Dim a(15) As Byte, max As Byte
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 0 To 14
Cells(3, 5 + i) = Int(10 * Rnd)
Next
End Sub
Private Sub CommandButton2_Click()
Dim i As Byte
For i = 0 To 14
a(i) = Cells(3, 5 + i)
Next
f (0)
End Sub
Sub f(g As Byte)
Dim i As Byte, ik As Byte, w As Byte
max = 0
For i = g To 14
If a(i) > max Then
max = a(i)
ik = i
End If
Next
If ik > g Then
w = a(g)
a(g) = a(ik)
a(ik) = w
End If
If g + 1 < 15 Then
f (g + 1)
Else
For i = 0 To 14
Cells(5, 5 + i) = a(i)
Next
End If
End Sub
Private Sub CommandButton3_Click()
Range("E3:S5").Select
Selection.ClearContents
Range("A1").Select
End Sub
実行例
昇順(小さい順)の場合
Dim a(15) As Byte, min As Byte
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 0 To 14
Cells(3, 5 + i) = Int(10 * Rnd)
Next
End Sub
Private Sub CommandButton2_Click()
Dim i As Byte
For i = 0 To 14
a(i) = Cells(3, 5 + i)
Next
f (0)
End Sub
Sub f(g As Byte)
Dim i As Byte, ik As Byte, w As Byte
min = 100
For i = g To 14
If a(i) < min Then
min = a(i)
ik = i
End If
Next
If ik > g Then
w = a(g)
a(g) = a(ik)
a(ik) = w
End If
If g + 1 < 15 Then
f (g + 1)
Else
For i = 0 To 14
Cells(5, 5 + i) = a(i)
Next
End If
End Sub
Private Sub CommandButton3_Click()
Range("E3:S5").Select
Selection.ClearContents
Range("A1").Select
End Sub
実行例
ダウンロード用参考ファイル
さあ、いよいよすべての準備が終わりました。
条件の厳しい順ランク付けを行いましょう。
第9話へ 第11話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る