Y10
Advanced Member >PLATINUM<
.... modificare questo script fatto da Luigib inserendo la sorte di quaterna e tutte le 288 estrazioni giornaliere ? Grazie anticipate.
Option Explicit
Dim collFormazioni
Dim CollFomGiocateFreq
Dim CollFomGiocateNonFreq
Dim aColonneDL
Dim aMatriceRid
Dim aPremi
Dim aPoste
Class clsFormazione
Public nPresenze
Public sNumeri
Public aNumeri(10)
End Class
Sub Main
Dim nEstrInizio,nEstrFine
Dim DataIni,DataFin
Dim FasciaOrariaIni,FasciaOrariaFin
Dim sOraIni,sOraFin
Dim quantitaFrz
Dim nClasse,nSorte
Dim nEstrEsam,nEstrValide,nEstrNonValide
Dim bUsaRidotto
Dim sFileSistema
Call ImpostaArchivio10ELotto(2)
Call ImpostaPremi
quantitaFrz = Int(InputBox("Quantita formazioni in gioco","Quantita",2))
If quantitaFrz > 0 Then
If ChiediDataInizioFine(DataIni,DataFin,10) Then
If ChiediFasciaInizioFine(FasciaOrariaIni,FasciaOrariaFin,sOraIni,sOraFin) Then
If ChiediClasse(nClasse) Then
If ChiediSorte(nSorte) Then
If ChiediTipoSviluppo(bUsaRidotto,sFileSistema,nClasse,nSorte) Then
nEstrInizio = DataEstrToIdEstrDL(Day(DataIni),Month(DataIni),Year(DataIni),1)
nEstrFine = DataEstrToIdEstrDL(Day(DataFin),Month(DataFin),Year(DataFin),1)
If IsRangeValido(nEstrInizio,nEstrFine) Then
Call EseguiStatistica(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte,bUsaRidotto,nEstrEsam,nEstrValide,nEstrNonValide)
Call ScriviParametriRicerca(DataIni,DataFin,sOraIni,sOraFin,nEstrEsam,nEstrValide,nEstrNonValide,quantitaFrz,nClasse,nSorte)
Call MostraFormazioniPiuFre(quantitaFrz)
Call MostraFormazioniMenoFre(quantitaFrz)
Call InitAnalizzaGioco(DataFin,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte)
End If
End If
End If
End If
End If
End If
End If
End Sub
Sub ScriviParametriRicerca(DataI,DataF,OraI,OraF,EstrEsam,Valide,NonValide,QuantitaFrz,nClasse,nSorte)
Call Scrivi("Statistica delle prime " & QuantitaFrz & " formazioni piu frequenti in " & NomeSorte(nClasse) & " per la sorte di " & NomeSorte(nSorte))
Call Scrivi
Call Scrivi("Data inizio : " & DataI)
Call Scrivi("Data fine : " & DataF)
Call Scrivi("Range Orario : " & OraI & "/" & OraF)
Call Scrivi("Estrazioni nel range : " & EstrEsam & " (Valide : " & Valide & "; NonValide : " & NonValide & ")")
Call Scrivi
End Sub
Sub MostraFormazioniPiuFre(Quantita)
Dim clsFrz
Dim k,y
Dim idFrz
Call Scrivi("Formazioni piu frequenti")
ReDim aIdFrzScelte(Quantita,1)
For Each clsFrz In collFormazioni
idFrz = idFrz + 1
For k = 1 To Quantita
If clsFrz.nPresenze >= aIdFrzScelte(k,0) Then
For y = Quantita To(k + 1) Step - 1
aIdFrzScelte(y,0) = aIdFrzScelte(y - 1,0)
aIdFrzScelte(y,1) = aIdFrzScelte(y - 1,1)
Next
aIdFrzScelte(k,0) = clsFrz.nPresenze
aIdFrzScelte(k,1) = idFrz
Exit For
End If
Next
Next
ReDim aV(2)
aV(1) = "Formazione"
aV(2) = "Presenze"
InitTabella(aV)
For k = 1 To Quantita
Set clsFrz = collFormazioni(aIdFrzScelte(k,1))
aV(1) = clsFrz.sNumeri
aV(2) = clsFrz.nPresenze
Call AddRigaTabella(aV)
Call CollFomGiocateFreq.Add(clsFrz)
Next
Call CreaTabella
End Sub
Sub MostraFormazioniMenoFre(Quantita)
Dim clsFrz
Dim k,y
Dim idFrz
Call Scrivi("Formazioni meno frequenti (tra quelle comunque uscite)")
ReDim aIdFrzScelte(Quantita,1)
For k = 1 To Quantita
aIdFrzScelte(k,0) = 10000000
Next
For Each clsFrz In collFormazioni
idFrz = idFrz + 1
For k = 1 To Quantita
If clsFrz.nPresenze <= aIdFrzScelte(k,0) Then
For y = Quantita To(k + 1) Step - 1
aIdFrzScelte(y,0) = aIdFrzScelte(y - 1,0)
aIdFrzScelte(y,1) = aIdFrzScelte(y - 1,1)
Next
aIdFrzScelte(k,0) = clsFrz.nPresenze
aIdFrzScelte(k,1) = idFrz
Exit For
End If
Next
Next
ReDim aV(2)
aV(1) = "Formazione"
aV(2) = "Presenze"
InitTabella(aV)
For k = 1 To Quantita
Set clsFrz = collFormazioni(aIdFrzScelte(k,1))
aV(1) = clsFrz.sNumeri
aV(2) = clsFrz.nPresenze
Call AddRigaTabella(aV)
Call CollFomGiocateNonFreq.Add(clsFrz)
Next
Call CreaTabella
End Sub
Sub EseguiStatistica(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte,bUsaRidotto,nEstrEsaminateTot,nEstrValide,nEstrNonValide)
Dim k,f,idEstr,idCol,y,p
Dim idFrz
Dim clsFrz
nEstrEsaminateTot = 0
nEstrValide = 0
nEstrNonValide = 0
idFrz = 0
idCol = 0
ReDim aColonneDL(GetQColonneInteressate(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin),90)
Set collFormazioni = GetNewCollection
Set CollFomGiocateFreq = GetNewCollection
Set CollFomGiocateNonFreq = GetNewCollection
For k = nEstrInizio To nEstrFine Step 228
Call Messaggio("Estrazione : " & k)
For f = FasciaOrariaIni To FasciaOrariaFin
idEstr =(k - 1) + f
ReDim aNum(0)
Call GetEstrazioneCompletaDL(idEstr,aNum)
If aNum(1) > 0 Then
idCol = idCol + 1
For y = 1 To 20
aColonneDL(idCol,aNum) = True
Next
Call InserisciForrmazioniInColl(aNum,nClasse,nSorte,bUsaRidotto)
nEstrValide = nEstrValide + 1
Else
nEstrNonValide = nEstrNonValide + 1
End If
nEstrEsaminateTot = nEstrEsaminateTot + 1
If ScriptInterrotto Then Exit For
Next
If ScriptInterrotto Then Exit For
Next
Messaggio("Conteggio formazioni piu frequenti")
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
For Each clsFrz In collFormazioni
For k = 1 To UBound(aColonneDL)
p = 0
For y = 1 To nClasse
If aColonneDL(k,clsFrz.aNumeri) Then
p = p + 1
End If
Next
If p >= nSorte Then
clsFrz.nPresenze = clsFrz.nPresenze + 1
End If
Next
idFrz = idFrz + 1
If idFrz Mod 100 = 0 Then
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
If ScriptInterrotto Then Exit For
End If
Next
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
End Sub
Function GetQColonneInteressate(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin)
Dim nGg
nGg =(((nEstrFine + 1) - nEstrInizio)\228) + 1
If nGg = 0 Then nGg = 1
GetQColonneInteressate =((FasciaOrariaFin + 1) - FasciaOrariaIni) * nGg
End Function
Option Explicit
Dim collFormazioni
Dim CollFomGiocateFreq
Dim CollFomGiocateNonFreq
Dim aColonneDL
Dim aMatriceRid
Dim aPremi
Dim aPoste
Class clsFormazione
Public nPresenze
Public sNumeri
Public aNumeri(10)
End Class
Sub Main
Dim nEstrInizio,nEstrFine
Dim DataIni,DataFin
Dim FasciaOrariaIni,FasciaOrariaFin
Dim sOraIni,sOraFin
Dim quantitaFrz
Dim nClasse,nSorte
Dim nEstrEsam,nEstrValide,nEstrNonValide
Dim bUsaRidotto
Dim sFileSistema
Call ImpostaArchivio10ELotto(2)
Call ImpostaPremi
quantitaFrz = Int(InputBox("Quantita formazioni in gioco","Quantita",2))
If quantitaFrz > 0 Then
If ChiediDataInizioFine(DataIni,DataFin,10) Then
If ChiediFasciaInizioFine(FasciaOrariaIni,FasciaOrariaFin,sOraIni,sOraFin) Then
If ChiediClasse(nClasse) Then
If ChiediSorte(nSorte) Then
If ChiediTipoSviluppo(bUsaRidotto,sFileSistema,nClasse,nSorte) Then
nEstrInizio = DataEstrToIdEstrDL(Day(DataIni),Month(DataIni),Year(DataIni),1)
nEstrFine = DataEstrToIdEstrDL(Day(DataFin),Month(DataFin),Year(DataFin),1)
If IsRangeValido(nEstrInizio,nEstrFine) Then
Call EseguiStatistica(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte,bUsaRidotto,nEstrEsam,nEstrValide,nEstrNonValide)
Call ScriviParametriRicerca(DataIni,DataFin,sOraIni,sOraFin,nEstrEsam,nEstrValide,nEstrNonValide,quantitaFrz,nClasse,nSorte)
Call MostraFormazioniPiuFre(quantitaFrz)
Call MostraFormazioniMenoFre(quantitaFrz)
Call InitAnalizzaGioco(DataFin,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte)
End If
End If
End If
End If
End If
End If
End If
End Sub
Sub ScriviParametriRicerca(DataI,DataF,OraI,OraF,EstrEsam,Valide,NonValide,QuantitaFrz,nClasse,nSorte)
Call Scrivi("Statistica delle prime " & QuantitaFrz & " formazioni piu frequenti in " & NomeSorte(nClasse) & " per la sorte di " & NomeSorte(nSorte))
Call Scrivi
Call Scrivi("Data inizio : " & DataI)
Call Scrivi("Data fine : " & DataF)
Call Scrivi("Range Orario : " & OraI & "/" & OraF)
Call Scrivi("Estrazioni nel range : " & EstrEsam & " (Valide : " & Valide & "; NonValide : " & NonValide & ")")
Call Scrivi
End Sub
Sub MostraFormazioniPiuFre(Quantita)
Dim clsFrz
Dim k,y
Dim idFrz
Call Scrivi("Formazioni piu frequenti")
ReDim aIdFrzScelte(Quantita,1)
For Each clsFrz In collFormazioni
idFrz = idFrz + 1
For k = 1 To Quantita
If clsFrz.nPresenze >= aIdFrzScelte(k,0) Then
For y = Quantita To(k + 1) Step - 1
aIdFrzScelte(y,0) = aIdFrzScelte(y - 1,0)
aIdFrzScelte(y,1) = aIdFrzScelte(y - 1,1)
Next
aIdFrzScelte(k,0) = clsFrz.nPresenze
aIdFrzScelte(k,1) = idFrz
Exit For
End If
Next
Next
ReDim aV(2)
aV(1) = "Formazione"
aV(2) = "Presenze"
InitTabella(aV)
For k = 1 To Quantita
Set clsFrz = collFormazioni(aIdFrzScelte(k,1))
aV(1) = clsFrz.sNumeri
aV(2) = clsFrz.nPresenze
Call AddRigaTabella(aV)
Call CollFomGiocateFreq.Add(clsFrz)
Next
Call CreaTabella
End Sub
Sub MostraFormazioniMenoFre(Quantita)
Dim clsFrz
Dim k,y
Dim idFrz
Call Scrivi("Formazioni meno frequenti (tra quelle comunque uscite)")
ReDim aIdFrzScelte(Quantita,1)
For k = 1 To Quantita
aIdFrzScelte(k,0) = 10000000
Next
For Each clsFrz In collFormazioni
idFrz = idFrz + 1
For k = 1 To Quantita
If clsFrz.nPresenze <= aIdFrzScelte(k,0) Then
For y = Quantita To(k + 1) Step - 1
aIdFrzScelte(y,0) = aIdFrzScelte(y - 1,0)
aIdFrzScelte(y,1) = aIdFrzScelte(y - 1,1)
Next
aIdFrzScelte(k,0) = clsFrz.nPresenze
aIdFrzScelte(k,1) = idFrz
Exit For
End If
Next
Next
ReDim aV(2)
aV(1) = "Formazione"
aV(2) = "Presenze"
InitTabella(aV)
For k = 1 To Quantita
Set clsFrz = collFormazioni(aIdFrzScelte(k,1))
aV(1) = clsFrz.sNumeri
aV(2) = clsFrz.nPresenze
Call AddRigaTabella(aV)
Call CollFomGiocateNonFreq.Add(clsFrz)
Next
Call CreaTabella
End Sub
Sub EseguiStatistica(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin,nClasse,nSorte,bUsaRidotto,nEstrEsaminateTot,nEstrValide,nEstrNonValide)
Dim k,f,idEstr,idCol,y,p
Dim idFrz
Dim clsFrz
nEstrEsaminateTot = 0
nEstrValide = 0
nEstrNonValide = 0
idFrz = 0
idCol = 0
ReDim aColonneDL(GetQColonneInteressate(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin),90)
Set collFormazioni = GetNewCollection
Set CollFomGiocateFreq = GetNewCollection
Set CollFomGiocateNonFreq = GetNewCollection
For k = nEstrInizio To nEstrFine Step 228
Call Messaggio("Estrazione : " & k)
For f = FasciaOrariaIni To FasciaOrariaFin
idEstr =(k - 1) + f
ReDim aNum(0)
Call GetEstrazioneCompletaDL(idEstr,aNum)
If aNum(1) > 0 Then
idCol = idCol + 1
For y = 1 To 20
aColonneDL(idCol,aNum) = True
Next
Call InserisciForrmazioniInColl(aNum,nClasse,nSorte,bUsaRidotto)
nEstrValide = nEstrValide + 1
Else
nEstrNonValide = nEstrNonValide + 1
End If
nEstrEsaminateTot = nEstrEsaminateTot + 1
If ScriptInterrotto Then Exit For
Next
If ScriptInterrotto Then Exit For
Next
Messaggio("Conteggio formazioni piu frequenti")
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
For Each clsFrz In collFormazioni
For k = 1 To UBound(aColonneDL)
p = 0
For y = 1 To nClasse
If aColonneDL(k,clsFrz.aNumeri) Then
p = p + 1
End If
Next
If p >= nSorte Then
clsFrz.nPresenze = clsFrz.nPresenze + 1
End If
Next
idFrz = idFrz + 1
If idFrz Mod 100 = 0 Then
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
If ScriptInterrotto Then Exit For
End If
Next
Call AvanzamentoElab(0,collFormazioni.count,idFrz)
End Sub
Function GetQColonneInteressate(nEstrInizio,nEstrFine,FasciaOrariaIni,FasciaOrariaFin)
Dim nGg
nGg =(((nEstrFine + 1) - nEstrInizio)\228) + 1
If nGg = 0 Then nGg = 1
GetQColonneInteressate =((FasciaOrariaFin + 1) - FasciaOrariaIni) * nGg
End Function