Option Explicit
Sub Main
'0904_11 Rosanna prova funzione decina naturale x Despereaux
Dim Ini,nCiclo,nDec,nColpi,nCasi,nRit
Dim es,r,p,s ' variabili usate nei cicli for next e per gestire stringhe
Dim aNum,aRu(1),aPosta(1) ' array per numeri, ruote, posta in gioco
'---------------------------- inizializzazioni variabili prima dello scorrimento archivio in esame
nCiclo = 17 ' queste sono le reali estrazioni in esame prima dell'es di rilevazione 3num in decina
nColpi = 6 ' colpi di gioco
Ini = EstrazioneFin - 499
nCasi = 0
aPosta(1) = 1 'posta per ambata
'------------------------------------------------
Scrivi "Ricerca la sortita di 3 (solo 3) numeri in decina naturale che nelle 17 estr prec non abbiano altre sortite",1
Scrivi "e li gioca(verifica) per " & nColpi & " colpi interrompendo la giocata al 1° Esito positivo per ambata",1
Scrivi "Archivio analizzato da: " & Ini & " a " & EstrazioneFin & " Tot " & EstrazioneFin - Ini + 1,1
Scrivi "Nb viene anche fornito il ritardo per ambata, antecedente la sortita della terzina in esame"
Scrivi
'------------------------------------------------
For es = Ini To EstrazioneFin ' scorro l'archivio da ini all'ultima estrazione in archivio
AvanzamentoElab Ini,EstrazioneFin,es
For r = 1 To 10 ' scorro le ruote
If VerificaDecNat(es,r) <> "" Then ' se nell'estrazione in esame ci sono almeno 3 numeri della stessa dec nat (vedi Function)
nDec = CInt(Left(VerificaDecNat(es,r),1))
s = StringaDecina(es,r,nDec)
aNum = Split(s,".") ' carico sul vettore i numeri in decina nat passati dalla function
aRu(1) = r
nRit = SerieRitardo(1,es - 1,aNum,aRu,1) ' già che ci sono calcolo e poi visualizzo in output il Rit per ambata, precedente la sortita dei 3num in decina
If SerieFreq(es - nCiclo,es - 1,aNum,aRu,1) = 0 Then
nCasi = nCasi + 1
ColoreTesto 1
Scrivi DataEstrazione(es) & " " & SiglaRuota(r) & " => " & VerificaDecNat(es,r) & " => " & StringaNumeri(aNum) & " Rit precedente x ambata " & nRit & "--- Caso n° " & nCasi,1
ColoreTesto 0
ImpostaGiocata 1,aNum,aRu,aPosta,nColpi,1
Gioca es
End If
End If
Next
Next
ScriviResoconto
End Sub
Function VerificaDecNat(idEs,idR) ' se presenza di min 3 num in dec naturale restituisco una stringa con la decina naturale . QUANTITA'
Dim aDecNat(8) ' vettore per memorizzare il numero di numeri trovati
Dim i,p ' variabili utilizzate nei cicli for next
Erase aDecNat '<== DUBBIO. Serve nella function inizializzare /svuotare l'array??
For p = 1 To 5
For i = 0 To 8
If DecinaNaturale(Estratto(idEs,idR,p)) = i Then aDecNat(i) = aDecNat(i) + 1 'conteggio i num x ogni decnat
Next
Next
For i = 0 To 8
If aDecNat(i) = 3 Then VerificaDecNat = i & "." & aDecNat(i) ' assegno la decina naturale PUNTO il numero di num di quella decina
Next
' nb: il numero di numeri trovati può tornare utile qualora si voglia filtrare i casi in base alla presenza (3,4,5)
' in tal caso si può facilmente recuperare con un banale right...
' il PUNTO serve solo a migliorare la lettura dei valori
End Function
Function StringaDecina(idEs,idR,idDec)
Dim nContaDec,nNum,p
nContaDec = 0
For p = 1 To 5
nNum = Estratto(idEs,idR,p)
If DecinaNaturale(nNum) = idDec Then
nContaDec = nContaDec + 1
If nContaDec = 1 Then
StringaDecina = nNum
Else
StringaDecina = StringaDecina & "." & nNum
End If
End If
Next
End Function