Option Explicit
Sub Main
'0904_16 Rosanna x Miki55
'http://forum.lottoced.com/f12/per-rosanna-106426/
Dim r1,r2,c,ini,fine,es,esf,r,n1,n2,i,y
Dim nCasi,nCasiIC,bCorso,nColpo,nMaxRit,bEsito1,bEsito2
Dim mRuote(11,2) ' matrice coppia ruote consecutive
ReDim mEsiti(9,0) ' matrice per tutta la casistica conclusa e non
ReDim mStatRit(0,0)' matrice per riversare la casistica dei ritardi x ordinare i rit
ini = 7440 ' <=== attenzione 1° estrazione con la ruota Nazionale
nCasi = 0 'contatore casi
nCasiIC = 0 'contatore casi in corso
nMaxRit = 0
'---------------il seguente blocco serve a creare la matrice delle coppie di ruote
c = 0
For r1 = 1 To 11
If r1 = 11 Then r1 = 12
r2 = r1 + 1
If r1 = 10 Then r2 = 12
If r1 = 12 Then r2 = 1
c = c + 1
mRuote(c,1) = r1 : mRuote(c,2) = r2
Next
'--------------------------------------------- Blocco analisi archivio
For es = ini To EstrazioneFin - 1 ' Escludo l'ultima estrazione di cui non posso cercare gli esiti
AvanzamentoElab ini,EstrazioneFin,es
For r = 1 To 11 ' scorro la MATRICE mRuote delle 11 coppie di ruote
nCasi = nCasi + 1
n1 = Estratto(es,mRuote(r,1),5) ' 5° estratto di ciascuna coppia di ruote
n2 = Estratto(es,mRuote(r,2),1) ' 1° estratto di ciascuna coppia di ruote
If es + 200 > EstrazioneFin Then fine = EstrazioneFin Else fine = es + 200
nColpo = - 1'inizializzo la variabile per il conteggio dei ritardi
bEsito1 = False
bEsito2 = False 'inizializzo il controllo degli esiti
For esf = es + 1 To fine ' scorro l'archivio per la ricerca degli sfaldamenti
nColpo = nColpo + 1 'contatore per il ritardo
If Posizione(esf,mRuote(r,1),n1) > 0 Then
bEsito1 = True
If nColpo > nMaxRit Then nMaxRit = nColpo
ReDim Preserve mEsiti(9,nCasi)
mEsiti(1,nCasi) = es 'Estrazione di rilevamento
mEsiti(2,nCasi) = mRuote(r,1) '1^ ruota
mEsiti(3,nCasi) = n1 '1° numero
mEsiti(4,nCasi) = mRuote(r,2) '2^ ruota
mEsiti(5,nCasi) = n2 '2°numero
mEsiti(6,nCasi) = n1 '1° numero sortito!
mEsiti(8,nCasi) = nColpo 'ritardo
End If
If Posizione(esf,mRuote(r,2),n2) > 0 Then
bEsito2 = True
If nColpo > nMaxRit Then nMaxRit = nColpo
If bEsito1 = True Then
mEsiti(7,nCasi) = n2 ' 2° numero sortito!
Else
ReDim Preserve mEsiti(9,nCasi)
mEsiti(1,nCasi) = es 'Estrazione di rilevamento
mEsiti(2,nCasi) = mRuote(r,1)
mEsiti(3,nCasi) = n1
mEsiti(4,nCasi) = mRuote(r,2)
mEsiti(5,nCasi) = n2
mEsiti(7,nCasi) = n2 ' 2° numero sortito!
mEsiti(8,nCasi) = nColpo 'ritardo
End If
End If
If bEsito1 = False And bEsito2 = False And esf = fine Then
nCasiIC = nCasiIC + 1
ReDim Preserve mEsiti(9,nCasi)
mEsiti(1,nCasi) = es
mEsiti(2,nCasi) = mRuote(r,1)
mEsiti(3,nCasi) = n1
mEsiti(4,nCasi) = mRuote(r,2)
mEsiti(5,nCasi) = n2
mEsiti(8,nCasi) = nColpo 'ritardo
mEsiti(9,nCasi) = "in corso" ' segnalazione di caso in corso
End If
If bEsito1 = True Or bEsito2 = True Then Exit For ' se trova almeno un esito+ esce dal ciclo
Next
Next
Next
For r = 1 To 11
nCasi = nCasi + 1
ReDim Preserve mEsiti(9,nCasi)
mEsiti(1,nCasi) = EstrazioneFin
mEsiti(2,nCasi) = mRuote(r,1)
mEsiti(3,nCasi) = Estratto(EstrazioneFin,mRuote(r,1),5)
mEsiti(4,nCasi) = mRuote(r,2)
mEsiti(5,nCasi) = Estratto(EstrazioneFin,mRuote(r,2),1)
mEsiti(8,nCasi) = - 1 'ritardo
mEsiti(9,nCasi) = "in corso" ' segnalazione di caso in corso
Next
'----------------------------------------------1) output dettagliato di tutti i casi conclusi
Call Scrivi ("RICERCA SFALDAMENTI 5°ESTRATTO o 1°ESTRATTO RUOTE CONSECUTIVE",1)
Call Scrivi ("ARCHIVIO ANALIZZATO DAL " & DataEstrazione(ini) & " AL " & DataEstrazione(EstrazioneFin - 1),1)
Call Scrivi ("Tot casi analizzati: " & nCasi & " di cui in corso: " & nCasiIC,1)
Call Scrivi ("Max ritardo rilevato per lo sfaldamento di almeno uno degli estratti (su ruota di rilevazione): " & nMaxRit,1)
Call Scrivi
Call Scrivi (" -- Caso - DataEstr - R1 5° R2 1° - Esiti - Rit ",1)
For i = 1 To nCasi
If mEsiti(9,i) <> "in corso" Then
Call Scrivi (FormatSpace(i,7,1) & "° - " & DataEstrazione(mEsiti(1,i)) & " " & SiglaRuota(mEsiti(2,i)) & " " & Format2(mEsiti(3,i)) & " " & _
SiglaRuota(mEsiti(4,i)) & " " & Format2(mEsiti(5,i)) & " - " & FormatSpace(mEsiti(6,i),2,1) & " " & FormatSpace(mEsiti(7,i),2,1) & _
FormatSpace(mEsiti(8,i),5,1) & " " & FormatSpace(mEsiti(9,i),5,1))
End If
Next
'-----------------------------------------------2) output dei casi in attesa di sfaldamento
Call ColoreTesto(1)
Call Scrivi
Call Scrivi ("CASISTICA IN ATTESA DI SFALDAMENTO (DI ALMENO UNO DEI DUE NUMERI)",1)
Call Scrivi (" -- Caso - DataEstr - R1 5° R2 1° - Esiti - Rit - Nota",1)
For i = 1 To nCasi
If mEsiti(9,i) = "in corso" Then
Call Scrivi (FormatSpace(i,7,1) & "° - " & DataEstrazione(mEsiti(1,i)) & " " & SiglaRuota(mEsiti(2,i)) & " " & Format2(mEsiti(3,i)) & " " & _
SiglaRuota(mEsiti(4,i)) & " " & Format2(mEsiti(5,i)) & " - " & FormatSpace(mEsiti(6,i),2,1) & " " & FormatSpace(mEsiti(7,i),2,1) & _
FormatSpace(mEsiti(8,i) + 1,5,1) & Space(4) & FormatSpace(mEsiti(9,i),5,1))
End If
Next
'-----------------------------------------------3) output statistica per ritardo (solo casi conclusi)
ColoreTesto 3
Call Scrivi
Call Scrivi ("CASISTICA PER RITARDO (solo casi conclusi)",1)
Call Scrivi
ReDim mStatRit(nMaxRit + 1,2)
For i = 0 To nMaxRit
mStatRit(i + 1,1) = i ' inizializzo la colonna 1 della matrice con i rit rilevati. il rit 0 sta nella riga 1 etc
mStatRit(i + 1,2) = 0
Next
For i = 1 To nCasi
If mEsiti(9,i) <> "in corso" Then ' se il caso è concluso lo conteggio
mStatRit(mEsiti(8,i) + 1,2) = mStatRit(mEsiti(8,i) + 1,2) + 1 ' nb il rit 0 è sull'indice 1, il rit 1 è sull'indice 2 etc.
End If
Next
Call Scrivi ("Ritardo casi",1)
For i = 1 To nMaxRit + 1' il più uno serve perchè i ritardi caricati sulla colonna1 partono da zero e questo serve x l'ordinamento
If mStatRit(i,2)>0 Then Call Scrivi (FormatSpace(mStatRit(i,1),3,1) & Space(5) & mStatRit(i,2))
Next
'------------------------------------------------4) output dettaglio casi di max rit storico
ColoreTesto 2
Call Scrivi
Call Scrivi ("DETTAGLIO CASISTICA DEI MAX RIT STORICI ",1)
Call Scrivi
c = 0
OrdinaMatrice mStatRit,1,1 ' ordino crescente per ritardo
Call Scrivi ("DataEstr - R1 5° R2 1° - Esiti - Rit ",1)
For y = nMaxRit + 1 To 1 Step - 1
If mStatRit(y,2) > 0 Then
c = c + 1
For i = 1 To nCasi
If mStatRit(y,1) = mEsiti(8,i) Then
Call Scrivi (DataEstrazione(mEsiti(1,i)) & " " & SiglaRuota(mEsiti(2,i)) & " " & Format2(mEsiti(3,i)) & " " & _
SiglaRuota(mEsiti(4,i)) & " " & Format2(mEsiti(5,i)) & " - " & FormatSpace(mEsiti(6,i),2,1) & " " & FormatSpace(mEsiti(7,i),2,1) & _
FormatSpace(mEsiti(8,i),5,1) & Space(4) & FormatSpace(mEsiti(9,i),5,1))
End If
Next
End If
If c = 20 Then Exit For ' per scelta mi fermo ai casi dei primi 20 max ritardi
Next
End Sub