lottofortune
Advanced Member >PLATINUM<
Option Explicit
Class ClsTerno
Public sNumeri
Public nPresenze
End Class
Class clsSpia
Public Numero
Private collTerni
Public Property Get PresenzeMax
Dim cTerno
Dim nMax
If Not collTerni Is Nothing Then
For Each cTerno In collTerni
If cTerno.npresenze > nMax Then
nMax = cTerno.npresenze
End If
Next
End If
PresenzeMax = nMax
End Property
Sub InitColl
Set collTerni = GetNewCollection
End Sub
Function GetTerno(sKey)
On Error Resume Next
Set GetTerno = collTerni(sKey)
If Err <> 0 Then
Err.Clear
Set GetTerno = Nothing
End If
End Function
Sub IncrementaPresenzeTerni(aTerni)
Dim k,e
Dim sKey
Dim cTerno
For k = 1 To UBound(aTerni)
sKey = "i"
For e = 1 To 3
sKey = sKey & Format2(aTerni(k,e)) & "-"
Next
sKey = Left(sKey,Len(sKey) - 1)
Set cTerno = GetTerno(sKey)
If cTerno Is Nothing Then
Set cTerno = New ClsTerno
cTerno.sNumeri = sKey
Call collTerni.Add(cTerno,sKey)
cTerno.nPresenze = 1
Else
cTerno.nPresenze = cTerno.nPresenze + 1
End If
Next
End Sub
Sub CalcolaTerni(Inizio,Fine,ruota)
Dim k,e
Dim aTerni
For k = Inizio To Fine
ReDim aN(5)
For e = 1 To 5
aN(e) = Estratto(k,ruota,e)
Next
If aN(1) > 0 Then
aTerni = SviluppoIntegrale(aN,3)
Call IncrementaPresenzeTerni(aTerni)
End If
Next
End Sub
Sub ScriviTerniSpiati
Dim cTerno
Call OrdinaItemCollection(collTerni,"nPresenze","sNumeri")
Call Scrivi("Numero " & Numero)
Call Scrivi
For Each cTerno In collTerni
If cTerno.nPresenze > 1 Then
Call Scrivi(Mid(cTerno.sNumeri,2) & "---> " & cTerno.nPresenze)
End If
Next
Call Scrivi(String(50,"-"))
End Sub
End Class
Sub Main
Dim collSpie
Dim idEst,e,n
Dim Inizio,Fine
Dim nColpi
Dim nRuota
Dim cSpia
nColpi = CInt(InputBox("Quanti colpi ?","Colpi di gioco",12))
nRuota = ScegliRuota
If nRuota = 0 Or nColpi <= 0 Then Exit Sub
Inizio = EstrazioneIni
Fine = EstrazioneFin
Call InitCollSpie(collSpie)
For idEst = Inizio To Fine
For e = 1 To 5
n = Estratto(idEst,nRuota,e)
If n > 0 Then
Set cSpia = collSpie("i" & n)
Call cSpia.CalcolaTerni(idEst + 1,idEst + nColpi,nRuota)
End If
Next
Call AvanzamentoElab(Inizio,Fine,idEst)
If ScriptInterrotto Then Exit For
Next
Call Messaggio("ordinamento per spia con maggior esiti")
Call OrdinaItemCollection(collSpie,"PresenzeMax")
Call Messaggio("Scrittura combinazioni rilevate")
For Each cSpia In collSpie
Call cSpia.ScriviTerniSpiati
Next
End Sub
Sub InitCollSpie(coll)
Dim k
Dim cSpia
Set coll = GetNewCollection
For k = 1 To 90
Set cSpia = New clsSpia
cSpia.numero = k
Call cSpia.InitColl
coll.Add cSpia,"i" & k
Next
End Sub
salve qualcuno puo aiutarmi,lo script parte ma poi arrivato ad un certo punto si ferma e mi da l errore 'memoria esaurite'.grazie