VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/12/16(Sat) 11:44
投稿者るしぇ
Eメール
URL
タイトルRe^5: 配列について質問です。

> Dat = Split(Lists, ",")
> Dat(1)でキーは取り出せるのですが・・・。
それ、質問とは全く関係無いやん?質問は『配列で。。。』
ってなってるから配列に数値データが入ってるのは前提条件です。

配列の第1番目のデータがキーなんだから
> Dat(1)でキーは取り出せるのですが・・・。
…馬鹿にされているようにしか感じませんが?
ってゆーか、配列の1番目の要素のインデックスは基本的には 0 ですが?
しかも2次元配列なんだから Dat(i,0) みたいな話から始まらないと。。。

初心者とか、そーゆー言い訳が通るレベルにさえ到達してなくって、
プログラムに関して『勉強』というものを、1時間もしてないんじゃないの?
って疑いたくなる書込みですが。。。
# プログラムは数学と同じで、勉強しないとできるようにはなりません。
# 掲示板で質問するだけでは、できるようになる事はありません。

同じ大きさの配列を用意して、
1,2,3,4,5  0,0,0,0,0
2,3,4,5,6  0,0,0,0,0
3,4,5,6,7  0,0,0,0,0
1,3,4,5,6  0,0,0,0,0

1番目の要素が0か同じキーなら足していくのが
誰でもできるんじゃない?
1,2,3,4,5  1,2,3,4,5
2,3,4,5,6  0,0,0,0,0
3,4,5,6,7  0,0,0,0,0
1,3,4,5,6  0,0,0,0,0

1,2,3,4,5  1,2,3,4,5
2,3,4,5,6  2,3,4,5,6
3,4,5,6,7  3,4,5,6,7
1,3,4,5,6  0,0,0,0,0

1,2,3,4,5  1,5,7,9,11
2,3,4,5,6  2,3,4,5,6
3,4,5,6,7  3,4,5,6,7
1,3,4,5,6  0,0,0,0,0

コードにするとこんな感じ。
[VB6.0]
Option Explicit

Private Sub Command2_Click()
    Dim intTestData() As Integer
    Dim intResultData() As Integer
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    
    intTestData = GetTestData("1,2,3,4,5\\2,3,4,5,6\\3,4,5,6,7\\1,3,4,5,6\\1,4,5,6,7\\4,5,6,7,8\\2,4,5,6,7")
    ReDim intResultData(UBound(intTestData, 1), UBound(intTestData, 2))
    For i = 0 To UBound(intTestData, 1)
        For j = 0 To UBound(intResultData, 1)
            If intResultData(j, 0) = 0 _
            Or intResultData(j, 0) = intTestData(i, 0) Then
                intResultData(j, 0) = intTestData(i, 0)
                For k = 1 To UBound(intTestData, 2)
                    intResultData(j, k) = intResultData(j, k) + intTestData(i, k)
                Next
                Exit For
            End If
        Next
    Next
    
End Sub

Private Function GetTestData(ByVal DataText As String) As Integer()
    Dim intReturnData() As Integer
    Dim strSplitAllData() As String
    Dim strSplitLineData() As String
    Dim i As Integer
    Dim j As Integer
    
    strSplitAllData = Split(DataText, "\\")
    For i = 0 To UBound(strSplitAllData, 1)
        strSplitLineData = Split(strSplitAllData(i), ",")
        If i = 0 Then
            ReDim intReturnData(UBound(strSplitAllData, 1), UBound(strSplitLineData, 1))
        End If
        For j = 0 To UBound(intReturnData, 2)
            intReturnData(i, j) = CInt(strSplitLineData(j))
        Next
    Next
    GetTestData = intReturnData
End Function


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -