« ねずみの競馬予想 2007年8月5日(番外編) | トップページ | IPATのログイン方法変更 »

ロトの当せんデータを自動取得する(7)

最後は、取得した当せんデータを回数の若い順に並べ替える処理です。
素直にページ順でデータを取得すると最新回のデータが先頭になってその後、過去の月別、
過去のデータという感じの並びになって順番がバラバラになります。
もちろんデータ取得するときにそれを考慮して取得すればソートする必要はないのですが、
今回はデータ取得処理を簡略化しているために最後にソート処理しています。


下記が2007年8月8日に実際にデータ取得したロト6の当せんデータです。

00354,04,06,22,31,34,41 43
00350,13,18,25,26,29,40 06
00351,03,13,16,24,26,43 15
00352,06,08,24,25,34,38 10
00353,01,09,15,16,22,26 29
00346,04,09,11,12,32,38 16
00347,08,20,23,27,32,33 13
00348,04,05,06,27,36,38 13
00349,08,13,15,19,20,30 25

最新回(354回)のあとに2007年7月の当せんデータ(350回~353回)、2007年6月の
当せんデータ(346回~349回)と続きます。これでは少しわかりにくいと思います。


実際に最初のカンマまでの5文字を数値変換して、そのデータでソートするとこんな感じになります。

00346,04,09,11,12,32,38 16
00347,08,20,23,27,32,33 13
00348,04,05,06,27,36,38 13
00349,08,13,15,19,20,30 25
00350,13,18,25,26,29,40 06
00351,03,13,16,24,26,43 15
00352,06,08,24,25,34,38 10
00353,01,09,15,16,22,26 29
00354,04,06,22,31,34,41 43

一応少しわかりにくいのですがソートの処理を記述しておきます。データを入れ替えないで
指定したインデックス配列に昇順のデータがセットされる処理です。
piLoto6Cntにはロト6当せんデータ数、pstLoto6Tmp配列には当せんデータ文字列が格納されているとします。

Dim i As Integer
Dim piLoto6Idx() As Integer             ' 昇順インデックス配列
Dim piLoto6IdxData() As Integer         ' 回数データ配列
Dim pstLoto6() As String                ' ソート後の当せんデータ文字列配列

ReDim piLoto6Idx(piLoto6Cnt)
ReDim piLoto6IdxData(piLoto6Cnt)
For i = 0 To piLoto6Cnt - 1
    ' 先頭5文字を回数データに数値変換
    piLoto6IdxData(i) = CInt(Mid(pstLoto6Tmp(i), 1, 5))
Next i
Call SortIndex(piLoto6Cnt, piLoto6Idx, piLoto6IdxData, 0)   ' 昇順ソートを実行

ReDim pstLoto6(piLoto6Cnt)              ' ソート後の当せんデータ配列を確保
For i = 0 To piLoto6Cnt - 1
    pstLoto6(i) = pstLoto6Tmp(piLoto6Idx(i) - 1)
    Debug.Write(pstLoto6(i))
Next i
'
' 【インデックスソート処理】
'
' iMax      --> データ数
' SortNum() --> ソート順のインデックスが格納される配列
' InData()  --> ソートの元データ
'
Public Sub SortIndex(ByVal iMax As Integer, ByVal SortNum() As Integer, ByVal InData() As Integer,
    ByVal Mode As Integer)

    Dim i, j As Integer
    Dim iNumWork() As Integer
    Dim iWorkData() As Integer
    Dim bSts As Boolean

    Dim iPos, iWork As Integer
    Dim iData As Integer

    ReDim iNumWork(iMax)
    ReDim iWorkData(iMax)

    ' データをチェック
    bSts = False
    For i = 0 To iMax - 1
        If InData(i) <> 0 Then
            bSts = True
            Exit For
        End If
    Next i

    For i = 0 To iMax - 1
        SortNum(i) = i + 1
    Next i

    ' データが全て0の時は終了
    If bSts = False Then
        Return
    End If

    ' ソートデータをセット
    For i = 0 To iMax - 1
        iWorkData(i) = InData(i)
    Next i

    ' データをSORTして数値の高い方から並べる
    For i = 0 To iMax - 2
        iPos = i
        iData = iWorkData(iPos)

        For j = i + 1 To iMax - 1
            If Mode = 0 Then        ' 昇順
                If iData > iWorkData(j) Then
                    iPos = j
                    iData = iWorkData(j)
                End If
            Else                    ' 降順
                If iData < iWorkData(j) Then
                    iPos = j
                    iData = iWorkData(j)
                End If
            End If
        Next j
        iWorkData(iPos) = iWorkData(i)
        iWorkData(i) = iData

        iWork = SortNum(iPos)
        SortNum(iPos) = SortNum(i)
        SortNum(i) = iWork
    Next i

End Sub

|

« ねずみの競馬予想 2007年8月5日(番外編) | トップページ | IPATのログイン方法変更 »

ギャンブル」カテゴリの記事

パソコン・インターネット」カテゴリの記事

ロト」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217467/16055370

この記事へのトラックバック一覧です: ロトの当せんデータを自動取得する(7):

« ねずみの競馬予想 2007年8月5日(番外編) | トップページ | IPATのログイン方法変更 »