投稿日 | : 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