- - PR -
配列でグループNoを付番するには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-03 15:56
お世話になります。
2日程悩みに悩んで解決できない為、質問させて頂きます。 配列のアルゴリズムをご検討頂ければ助かります。 配列:二次元配列 Dim IntAry(5,2) As String 以下の数値が代入されているとします。 9 10 26 40 41 60 71 71 72 72 73 この時、同行数値は同グループとし、次行数値がどちらかに同数値があれば同じグループとします。 9 10 26 40 41 60 71 71 72 (71が同数なので上のグループと同じ) 72 73(72が同数なので上のグループと同じ) 結果は以下のようにしたい。 2列目にグループ名を付番する。 9 10 0 26 1 40 41 2 60 71 3 71 72 3 72 73 3 ▼以下のアルゴリズムでは旨くクループ分けができませんでした。 どなたか、お助け願います。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim IntAry(5, 2) As String 'Aの値 'Bの値 IntAry(0, 0) = 9 : IntAry(0, 1) = 10 IntAry(1, 0) = 26 : IntAry(1, 1) = "" IntAry(2, 0) = 40 : IntAry(2, 1) = 41 IntAry(3, 0) = 60 : IntAry(3, 1) = 71 IntAry(4, 0) = 71 : IntAry(4, 1) = 72 IntAry(5, 0) = 72 : IntAry(5, 1) = 73 Dim i, j, k As Integer Dim n As Integer = 0 ' グループ数 For i = 0 To 5 For j = 0 To 5 For k = 0 To n ' グループ数分の処理 If IntAry(j, 2) = k Then 'グループk 'グループkにAかBの値があれば If IntAry(i, 0) = IntAry(k, 0) Or IntAry(i, 1) = IntAry(k, 0) Or IntAry(i, 0) = IntAry(k, 1) Or IntAry(i, 1) = IntAry(k, 1) Then IntAry(i, 2) = n Else IntAry(i, 2) = n + 1 End If End If Next Next MsgBox(IntAry(i, 0) & ":" & IntAry(i, 1) & ":" & IntAry(i, 2)) Next End Sub | ||||
|
投稿日時: 2009-02-03 16:34
動作確認はしてませんがこんな感じで出来ませんか。
あと 「IntAry(0, 0) = 9 : IntAry(0, 1) = 10」 じゃなくて 「IntAry(0, 0) = "9" : IntAry(0, 1) = "10"」 じゃないでしょうか。 | ||||
|
投稿日時: 2009-02-03 16:57
King様
早速のご回答ありがとうございます。 このような方法があったのですね。 大変勉強になりました。 動作確認しましたところ、希望の結果になりました。 本当にありがとうございました。 以上 |
1