Ciao, io ho trovato questo fatto dal grande Luigi, ma bisognerebbe modificarlo.
magari facendogli visualizzare solo i terni con stesso ritardo in più ruote, come ha fatto l'esempio trivellato 1-2-3 ritardo uguale per terno secco di questa terzina su almento 2 ruote.
Magari con la possibilità di visualizzare anche gli ambi.
Option Explicit
Sub Main
Dim nClasse
Dim nGaranzia
Dim k,j
Dim sNumeri
Dim idComb
Dim nInizio,nFine
Dim idValoreDaAna
Dim sValoreUsato
Dim CombTot
Dim aRuote
ReDim aCombMigliori(100,4)
nClasse = ScegliClasse
Call ScegliRuote(aRuote)
nGaranzia = ScegliGaranzia
idValoreDaAna = ScegliValoreDaAnalizzare(sValoreUsato)
nInizio = EstrazioneFin - 1000
nFine = EstrazioneFin
If nClasse > 0 And nGaranzia > 0 And nGaranzia <= nClasse And idValoreDaAna > 0 Then
Call Messaggio("Sviluppo combinazioni di classe " & nClasse)
CombTot = InitSviluppaComb(nClasse)
Call Messaggio("Statistica combinazioni in corso ")
ReDim aCol(nClasse)
Do While GetCombSviluppo(aCol) = True
Call AnalisiComb(aCol,aRuote,nGaranzia,aCombMigliori,nI nizio,nFine,idValoreDaAna)
k = k + 1
If k Mod 20 = 0 Then
Call Messaggio("Statistica combinazioni in corso " & k & " di " & CombTot)
Call AvanzamentoElab(1,CombTot,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Call Messaggio("")
ReDim aTitoli(4)
aTitoli(1) = "Combinazione"
aTitoli(2) = "Frequenza"
aTitoli(3) = "Ritardo"
aTitoli(4) = "RitardoMax"
Call Scrivi("Combinazioni di classe " & nClasse & " analizzate per punti " & nGaranzia & " sulle ruote " & GetRuoteUsate(aRuote))
Call Scrivi("La seguente lista mostra le prime 100 combinazioni in base al valore di " & sValoreUsato)
Call Scrivi("Range analizzato " & GetInfoEstrazione(nInizio) & " fino a " & GetInfoEstrazione(nFine))
Call Scrivi("Estrazioni analizzate totali : " &(nFine + 1) - nInizio)
Call Scrivi
Call InitTabella(aTitoli)
For k = 1 To UBound(aCombMigliori)
ReDim ADati(4)
ADati(1) = aCombMigliori(k,4)
ADati(2) = aCombMigliori(k,1)
ADati(3) = aCombMigliori(k,2)
ADati(4) = aCombMigliori(k,3)
Call AddRigaTabella(ADati)
Next
Call CreaTabella
Else
MsgBox "Selezionare la classe di sviluppo e la garanzia , " & _
"si ricorda che la garanzia non puo essere maggiore della classe di sviluppo " & _
"e che bisogna scegliere quale valore statistico considerare per " & _
"alimentare la lista delle prime 100 Combinazioni "
End If
End Sub
Sub AnalisiComb(aNum,aRuote,Garanzia,aCombMig,nInizio, nFine,idValoreDaAna)
Dim k,j
Dim Rit
Dim RitMax
Dim Freq
Dim Valore
Call StatisticaFormazione(aNum,aRuote,Garanzia,Rit,RitM ax,0,Freq,nInizio,nFine)
Select Case idValoreDaAna
Case 1
Valore = Freq
Case 2
Valore = Rit
Case 3
Valore = RitMax
End Select
For k = 1 To UBound(aCombMig)
If Valore >= aCombMig(k,0) Then
For j = UBound(aCombMig) To(k + 1) Step - 1
aCombMig(j,0) = aCombMig(j - 1,0)
aCombMig(j,1) = aCombMig(j - 1,1)
aCombMig(j,2) = aCombMig(j - 1,2)
aCombMig(j,3) = aCombMig(j - 1,3)
aCombMig(j,4) = aCombMig(j - 1,4)
Next
aCombMig(k,0) = Valore
aCombMig(k,1) = Freq
aCombMig(k,2) = Rit
aCombMig(k,3) = RitMax
aCombMig(k,4) = StringaNumeri(aNum)
Exit For
End If
Next
End Sub
Function InitSviluppaComb(Classe)
Dim k
ReDim aNum(90)
For k = 1 To 90
aNum(k) = k
Next
InitSviluppaComb = InitSviluppoIntegrale(aNum,Classe)
End Function
Function ScegliClasse()
ReDim aVoci(3)
aVoci(0) = "Estratto"
aVoci(1) = "Ambo"
aVoci(2) = "Terno"
aVoci(3) = "Quaterna"
ScegliClasse = ScegliOpzioneMenu(aVoci,2,"Secegli tipo combinazione") + 1
End Function
Function ScegliGaranzia()
ReDim aVoci(3)
aVoci(0) = "Estratto"
aVoci(1) = "Ambo"
aVoci(2) = "Terno"
aVoci(3) = "Quaterna"
ScegliGaranzia = ScegliOpzioneMenu(aVoci,2,"Secegli garanzia") + 1
End Function
Function ScegliValoreDaAnalizzare(sValore)
ReDim aVoci(2)
Dim i
aVoci(0) = "Frequenza"
aVoci(1) = "Ritardo"
aVoci(2) = "Ritardo massimo"
i = ScegliOpzioneMenu(aVoci,0,"Quale valore considerare per l'ordinamento ? ")
sValore = aVoci(i)
ScegliValoreDaAnalizzare = i + 1
End Function
Function GetRuoteUsate(aRuote)
Dim k
Dim s
For k = 1 To UBound(aRuote)
s = s & SiglaRuota(aRuote(k)) & " "
Next
GetRuoteUsate = Trim(s)
End Function