lotto_tom75
Advanced Premium Member
Sicuramente sto annegando in un bicchier d'acqua...
ma prima di diventare pazzo totalmente chiedo ad ilegend o chi per lui una nel capire come mai la nclassedinamica non cambia nonostante il valore di riduzione automatico lo faccia in modo apparentemente corretto...
Per vedere un esempio pratico basta mettere come gruppo base iniziale i 90 come classe iniziale 90 e come classe finale 2 e come step riduzionale iniziale 1; alla classe base dinamica 86 passa correttamente a step 2 ma poi... anzichè avere la relativa classe dinamica 86-2=84 passa erroneamente a classe dinamica 85 rimuovendo solo un punto di riduzione anzichè due... e cosi' fino alla fine.. anche per gli altri passaggi...
Ho provato a salvare il valore dinamico delllo step riduzionale in mille modi diversi (da ultimo anche su file txt) ma la classedinamica non ne vuole sapere di aggiornarsi in modo automatico correttamente rispetto ad esso. Se invece l'elaborazione avviene in modo manuale invece mantiene lo step riduzionale deciso aggiornandosi e riducendosi correttamente fino alla fine...
Grazie infinite a chi mi aiuta ad automatizzare questo script n.32
ma prima di diventare pazzo totalmente chiedo ad ilegend o chi per lui una nel capire come mai la nclassedinamica non cambia nonostante il valore di riduzione automatico lo faccia in modo apparentemente corretto...
Per vedere un esempio pratico basta mettere come gruppo base iniziale i 90 come classe iniziale 90 e come classe finale 2 e come step riduzionale iniziale 1; alla classe base dinamica 86 passa correttamente a step 2 ma poi... anzichè avere la relativa classe dinamica 86-2=84 passa erroneamente a classe dinamica 85 rimuovendo solo un punto di riduzione anzichè due... e cosi' fino alla fine.. anche per gli altri passaggi...
Ho provato a salvare il valore dinamico delllo step riduzionale in mille modi diversi (da ultimo anche su file txt) ma la classedinamica non ne vuole sapere di aggiornarsi in modo automatico correttamente rispetto ad esso. Se invece l'elaborazione avviene in modo manuale invece mantiene lo step riduzionale deciso aggiornandosi e riducendosi correttamente fino alla fine...
Codice:
Option Explicit
Class clsSviluppo
Private aBNumDaSvil
Private nQNumeri
Private nCombInt
Private nClasse
Private aRighe
Private nQNumPerRiga
Private aPuntatore
Private nSviluppate
Function InitSviluppo(aNumeri,Classe)
nQNumeri = AlimentArrayNumDaSvil(aNumeri)
nCombInt = Combinazioni(nQNumeri,Classe)
nClasse = Classe
nSviluppate = 0
If nCombInt > 0 Then
Call AlimentaArrayRighe
Call InitArrayPuntatore
End If
InitSviluppo = nCombInt
End Function
Function GetQuantitaNumeriDaSvil
GetQuantitaNumeriDaSvil = nQNumeri
End Function
Function GetStringaNumDaSvil
Dim s,k
s = ""
For k = 1 To UBound(aBNumDaSvil)
If aBNumDaSvil(k) Then
s = s & Format2(k) & "."
End If
Next
GetStringaNumDaSvil = RimuoviLastChr(s,".")
End Function
Private Sub InitArrayPuntatore
Dim k
ReDim aPuntatore(nClasse)
For k = 1 To nClasse - 1
aPuntatore(k) = 1
Next
aPuntatore(k) = 0
End Sub
Function GetComb(aComb)
Dim nTmp,K,nPuntatore
nPuntatore = nClasse
nTmp = aPuntatore(nPuntatore) + 1
Do While nTmp > nQNumPerRiga
nPuntatore = nPuntatore - 1
If nPuntatore <= 0 Then Exit Do
nTmp = aPuntatore(nPuntatore) + 1
Loop
If nPuntatore > 0 Then
For K = nPuntatore To nClasse
aPuntatore(K) = nTmp
Next
ReDim aComb(nClasse)
For K = 1 To nClasse
aComb(K) = aRighe(K,aPuntatore(K))
Next
nSviluppate = nSviluppate + 1
GetComb = True
Else
GetComb = False
End If
End Function
Function GetQuantitaSviluppate
GetQuantitaSviluppate = nSviluppate
End Function
Private Function AlimentArrayNumDaSvil(aNumeri)
Dim k,q
aBNumDaSvil = ArrayNumeriToBool(aNumeri)
For k = 1 To 90
If aBNumDaSvil(k) Then
q = q + 1
End If
Next
AlimentArrayNumDaSvil = q
End Function
Private Sub AlimentaArrayRighe
Dim nRiga,k,aNumeri
Call ArrayBNumToArrayNum(aBNumDaSvil,aNumeri)
nQNumPerRiga =(nQNumeri - nClasse) + 1
ReDim aRighe(nClasse,nQNumPerRiga)
For nRiga = 1 To nClasse
For k = nRiga To(nRiga + nQNumPerRiga) - 1 '(nQNumeri - nClasse) + nRiga
aRighe(nRiga,(k - nRiga) + 1) = aNumeri(k)
Next
Next
End Sub
Sub OutputARighe
Dim k,j,s
For k = 1 To nClasse
s = ""
For j = 1 To nQNumPerRiga
s = s & Format2(aRighe(k,j)) & "."
Next
Next
End Sub
End Class
Sub Main
Dim filediraccolta
filediraccolta = ".\filediraccolta.txt"
If FileEsistente(filediraccolta) Then
Call EliminaFile(filediraccolta)
End If
Dim filestepriduzionaledinamico
filestepriduzionaledinamico = ".\filestepriduzionaledinamico.txt"
If FileEsistente(filestepriduzionaledinamico) Then
Call EliminaFile(filestepriduzionaledinamico)
End If
Dim cSvil
Dim aNumDaSvil,nClasse,nCombInt,nQNumeri
Dim aColonna
Dim Inizio
Dim fine
Dim aRetcol,nSorte,RetRit1,RetRitMax,RetIncrRitMax,RetFreq,Iniziorange,idestrazione
fine = EstrazioneFin
Inizio = 1
Dim freqmassima
freqmassima = 0
Dim numfqmaxuguali
numfqmaxuguali = 0
Dim Formazioneconfqmassima
Dim Formazionesceltasolonumeri
Dim Stringaoutput
Dim contacomb
contacomb = 0
ReDim aruote(0)
'aruote(1) = 1
'aruote(2) = 2
'aruote(3) = 6
'aruote(4) = 10
'aruote(5) = 12
ScegliRuote(aruote)
nSorte = CInt(InputBox("sorte",,2))
Set cSvil = New clsSviluppo
Call ScegliNumeri(aNumDaSvil)
ScriviFile filediraccolta,StringaNumeri(aNumDaSvil)
CloseFileHandle(filediraccolta)
nClasse = CInt(InputBox("classe iniziale max 90 e min 1",,UBound(aNumDaSvil))) 'ScegliEsito(UBound(aNumDaSvil) - 2,2,90)
Dim nClassefinale
nClassefinale = CInt(InputBox("classe finale max 90 e min 1",,UBound(aNumDaSvil) - 1))
Dim Stepriduzionalevoluto 'meglio x i tempi di elaborazione non troppo lunghi se >= -3 e <= -1
Stepriduzionalevoluto = CInt(InputBox("step riduzionale voluto max -3 min -1",,3))
ScriviFile filestepriduzionaledinamico,Stepriduzionalevoluto
CloseFileHandle(filestepriduzionaledinamico)
ReDim ariga(0)
Call LeggiRigheFileDiTesto(filestepriduzionaledinamico,ariga)
Dim nClassedinamica
For nClassedinamica = nClasse To nClassefinale Step - Int(Trim(ariga(0)))
Call LeggiRigheFileDiTesto(filestepriduzionaledinamico,ariga)
'nClassedinamica = nClassedinamica -Int(ariga(0))
Scrivi
Scrivi "<font size=3 color=blue>classe dinamica adesso è " & nClassedinamica
Scrivi "<font size=5 color=blue>ariga(0) adesso è |" & Trim(ariga(0)) & "|"
Scrivi
'leggo il file filediraccolta
Dim anum
Dim y
Dim c
Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(filediraccolta,aRighe)
For y = 0 To UBound(aRighe)
If aRighe(y) <> "" Then
Call SplitByChar("." & aRighe(y) & ".",".",anum)
End If
Dim anumint
ReDim anumint(UBound(anum) - 1)
For c = 1 To UBound(anum) - 1
'Scrivi "|" & anum(c) & "|"
anumint(c) = Int(anum(c))
'
If ScriptInterrotto Then Exit For
Next
'
If ScriptInterrotto Then Exit For
Next
Dim varStop
Scrivi
Scrivi "<font color=green size=2> anumint |" & StringaNumeri(anumint) & "| classe anumint " & UBound(anumint)
Scrivi "<font color=green size=3> nClassedinamica " & nClassedinamica
Scrivi "<font color=green size=3> step riduzionale dinamico : " & - Int(ariga(0))
Scrivi
nCombInt = cSvil.InitSviluppo(anumint,nClassedinamica)
If nCombInt Then
nQNumeri = cSvil.GetQuantitaNumeriDaSvil
Scrivi cSvil.GetStringaNumDaSvil
Scrivi
Scrivi "Quantita numeri : " & nQNumeri
Scrivi "Classe dinamica : " & nClassedinamica
Scrivi "Combinazioni integrali : " & nCombInt
Scrivi "Step riduzionale dinamico : " & - Int(ariga(0)) 'Stepriduzionalevoluto
Scrivi
cSvil.OutputARighe
Scrivi
Do While cSvil.GetComb(aColonna)
Call StatisticaFormazioneTurbo(aColonna,aruote,nSorte,RetRit1,RetRitMax,RetIncrRitMax,RetFreq,Inizio,fine)
contacomb = contacomb + 1
Stringaoutput = StringaNumeri(aColonna) & " - " & StringaRuote(aruote) & " -s " & nSorte & " -ra " & RetRit1 & " -rs " & RetRitMax & " -incmax " & RetIncrRitMax & " -freq " & RetFreq & " -inizio " & Inizio & " -fine " & fine
If RetFreq > freqmassima Then
freqmassima = RetFreq
Formazioneconfqmassima = "<font color=red>" & Stringaoutput
Formazionesceltasolonumeri = StringaNumeri(aColonna)
numfqmaxuguali = 0
End If
If RetFreq = freqmassima Then
numfqmaxuguali = numfqmaxuguali + 1
End If
Messaggio cSvil.GetQuantitaSviluppate & " r " & StringaRuote(aruote) & " ncd " & nClassedinamica & " step rid " & Stepriduzionalevoluto
If ScriptInterrotto Then Exit Do
Call AvanzamentoElab(1,nCombInt,contacomb)
Loop
Scrivi
Scrivi "Sviluppate : " & cSvil.GetQuantitaSviluppate
Else
MsgBox "Impossibile sviluppare",vbCritical
Exit For
End If
Scrivi
Scrivi "report finale"
Scrivi
Scrivi "formazione con fq massima " & Formazioneconfqmassima
Scrivi
Dim giustovalorenumfqmaxuguali
giustovalorenumfqmaxuguali = numfqmaxuguali - 1
Scrivi "num. fq max uguali " & numfqmaxuguali - 1
Scrivi
Scrivi
Scrivi "formazione scelta (solo numeri) " & Formazionesceltasolonumeri
Scrivi
Scrivi
Scrivi "Tt " & TempoTrascorso
Scrivi
If Formazioneconfqmassima <> "" And numfqmaxuguali - 1 = 0 Then
If FileEsistente(filediraccolta) Then
Call EliminaFile(filediraccolta)
End If
ScriviFile filediraccolta,Formazionesceltasolonumeri
CloseFileHandle(filediraccolta)
Else
Scrivi "<font color=red>Alt! NUMERO FQ MAX UGUALI purtroppo maggiore di zero e pari a " & giustovalorenumfqmaxuguali
Scrivi "<font color=red>Interrompo qui l'elaborazione. Ricordo però che è possibile ripeterla da questo punto provando a cambiare valore di step riduzionale"
Scrivi "<font color=red>e sperando che così facendo la risultanza relativa alla fq max ricercata sia unica :)"
Stop
End If
If giustovalorenumfqmaxuguali > 0 Then ' Exit For
Select Case(Stepriduzionalevoluto)
Case 1
Stepriduzionalevoluto = Int(2)
Scrivi "<font color=red size=3>CAMBIO STEP RID in -2"
Scrivi "adesso step riduzionale è : " & Stepriduzionalevoluto
If FileEsistente(filestepriduzionaledinamico) Then
Call EliminaFile(filestepriduzionaledinamico)
End If
ScriviFile filestepriduzionaledinamico,Stepriduzionalevoluto
CloseFileHandle(filestepriduzionaledinamico)
Call LeggiRigheFileDiTesto(filestepriduzionaledinamico,ariga)
Case 2
Stepriduzionalevoluto = Int(3)
Scrivi "<font color=red size=3>CAMBIO STEP RID in -3"
Scrivi "adesso step riduzionale è : " & Stepriduzionalevoluto
If FileEsistente(filestepriduzionaledinamico) Then
Call EliminaFile(filestepriduzionaledinamico)
End If
ScriviFile filestepriduzionaledinamico,Stepriduzionalevoluto
CloseFileHandle(filestepriduzionaledinamico)
Call LeggiRigheFileDiTesto(filestepriduzionaledinamico,ariga)
Case 3
Scrivi "Al termine step riduzionale è : " & Stepriduzionalevoluto
Exit For
End Select
End If
'--------------- fine controllo x interrompere elaborazione o meno...
'prima di analizzare la nuova classe riazzeriamo tutto...
Dim xnuovaclassebase
Call SplitByChar(Formazionesceltasolonumeri,".",xnuovaclassebase)
nClasse = UBound(xnuovaclassebase)
freqmassima = 0
giustovalorenumfqmaxuguali = 0
Formazioneconfqmassima = ""
Formazionesceltasolonumeri = ""
Call LeggiRigheFileDiTesto(filestepriduzionaledinamico,ariga)
Next ' x nclassedinamica
' End If ' varstop
End Sub
Grazie infinite a chi mi aiuta ad automatizzare questo script n.32