The Wolf
Member
Sub Main()
Dim ruote(1)
Dim posta(1)
Dim num(90)
ruote(1) = 1
posta(1) = 1
Dim sp, spiaScelta, r, ini, fin, co, es, a, e, n, i, j
Dim percentualeUscita
' Matrice per ordinare i dati (90 righe, 2 colonne: colonna 1 = Numero, colonna 2 = Presenze)
Dim classifica(90, 2)
Dim tempNum, tempPres
' --- INSERIMENTO INPUTBOX PER SCELTA RUOTA ---
Dim messaggioRuote
messaggioRuote = "Inserisci il numero della RUOTA da esaminare:" & vbCrLf & _
"1 = Bari | 2 = Cagliari | 3 = Firenze | 4 = Genova" & vbCrLf & _
"5 = Milano | 6 = Napoli | 7 = Palermo | 8 = Roma" & vbCrLf & _
"9 = Torino | 10 = Venezia | 11 = Nazionale"
r = CInt(InputBox(messaggioRuote, "SCELTA RUOTA", 1))
' Controllo di sicurezza sulla ruota inserita
If r < 1 Or r > 11 Then
MsgBox "Selezione non valida! Verrà impostata la ruota di Bari (1).", vbInformation
r = 1
End If
' --- INSERIMENTO INPUTBOX PER SCELTA SPIA ---
spiaScelta = CInt(InputBox("Inserisci il NUMERO SPIA da analizzare (da 1 a 90)." & vbCrLf & "Inserisci 0 se vuoi analizzarli TUTTI:", "SCELTA SPIA", 90))
' Impostazione dell'intervallo estrazioni
ini = 7000 '------------------> Estrazione di inizio analisi
fin = EstrazioneFin '---------> Estrazione di fine analisi (oggi)
Scrivi "ANALISI STATISTICA: TOP 10 ABBINAMENTI PIÙ FREQUENTI"
Scrivi "Analisi dal " & DataEstrazione(ini) & " ad oggi sulla ruota di " & NomeRuota(r)
Scrivi "__________________________________________________________________________"
Scrivi
' Gestione del ciclo: se l'utente sceglie 0 fa da 1 a 90, altrimenti analizza solo la spia scelta
Dim spiaInizio, spiaFine
If spiaScelta = 0 Then
spiaInizio = 1
spiaFine = 90
Else
spiaInizio = spiaScelta
spiaFine = spiaScelta
End If
For sp = spiaInizio To spiaFine
Messaggio " Elaborazione Spia: " & sp
Call AvanzamentoElab(spiaInizio, spiaFine, sp)
ReimpostaArray num ' Azzera i dati delle presenze per la nuova spia
co = 0 ' Contatore dei casi in cui è uscita la spia
' 1. Conteggio delle presenze nei 6 colpi successivi
For es = ini To fin
If Posizione(es, r, sp) > 0 Then
co = co + 1
For a = es + 1 To es + 6
If a > fin Then Exit For
For e = 1 To 5
n = Estratto(a, r, e)
num
= num
+ 1
Next
Next
End If
Next
' Se la spia è uscita almeno una volta, ordiniamo i dati e creiamo la Top 10
If co > 0 Then
' 2. Popoliamo la matrice d'appoggio per l'ordinamento
For i = 1 To 90
classifica(i, 1) = i ' Salva il Numero Lotto
classifica(i, 2) = num(i) ' Salva le sue Presenze totali
Next
' 3. Algoritmo di ordinamento decrescente (dalle presenze più alte alle più basse)
For i = 1 To 89
For j = i + 1 To 90
If classifica(j, 2) > classifica(i, 2) Then
' Scambia il numero
tempNum = classifica(i, 1)
classifica(i, 1) = classifica(j, 1)
classifica(j, 1) = tempNum
' Scambia le presenze
tempPres = classifica(i, 2)
classifica(i, 2) = classifica(j, 2)
classifica(j, 2) = tempPres
End If
Next
Next
' 4. Stampa della Tabella dei Top 10
Scrivi "NUMERO SPIA: " & Format2(sp) & " su " & NomeRuota(r) & " (" & co & " casi rilevati nei successivi 6 colpi)"
Scrivi "--------------------------------------------------------------------------"
Scrivi "Posiz. | Numero Abbinato | Presenze (Uscite) | Percentuale d'Uscita"
Scrivi "--------------------------------------------------------------------------"
For i = 1 To 10 ' Prende solo i primi 10 della classifica ordinata
percentualeUscita = Round((classifica(i, 2) / co) * 100, 2)
Scrivi " " & Format2(i) & "° | " & Format2(classifica(i, 1)) & " | " & Format2(classifica(i, 2)) & " volte | " & Format2(percentualeUscita) & " %"
Next
Scrivi "__________________________________________________________________________"
Scrivi
End If
Next
End Sub
' Funzione di supporto per azzerare l'array ad ogni ciclo
Sub ReimpostaArray(ByRef vettore)
Dim k
For k = 0 To UBound(vettore)
vettore(k) = 0
Next
End Sub
Dim ruote(1)
Dim posta(1)
Dim num(90)
ruote(1) = 1
posta(1) = 1
Dim sp, spiaScelta, r, ini, fin, co, es, a, e, n, i, j
Dim percentualeUscita
' Matrice per ordinare i dati (90 righe, 2 colonne: colonna 1 = Numero, colonna 2 = Presenze)
Dim classifica(90, 2)
Dim tempNum, tempPres
' --- INSERIMENTO INPUTBOX PER SCELTA RUOTA ---
Dim messaggioRuote
messaggioRuote = "Inserisci il numero della RUOTA da esaminare:" & vbCrLf & _
"1 = Bari | 2 = Cagliari | 3 = Firenze | 4 = Genova" & vbCrLf & _
"5 = Milano | 6 = Napoli | 7 = Palermo | 8 = Roma" & vbCrLf & _
"9 = Torino | 10 = Venezia | 11 = Nazionale"
r = CInt(InputBox(messaggioRuote, "SCELTA RUOTA", 1))
' Controllo di sicurezza sulla ruota inserita
If r < 1 Or r > 11 Then
MsgBox "Selezione non valida! Verrà impostata la ruota di Bari (1).", vbInformation
r = 1
End If
' --- INSERIMENTO INPUTBOX PER SCELTA SPIA ---
spiaScelta = CInt(InputBox("Inserisci il NUMERO SPIA da analizzare (da 1 a 90)." & vbCrLf & "Inserisci 0 se vuoi analizzarli TUTTI:", "SCELTA SPIA", 90))
' Impostazione dell'intervallo estrazioni
ini = 7000 '------------------> Estrazione di inizio analisi
fin = EstrazioneFin '---------> Estrazione di fine analisi (oggi)
Scrivi "ANALISI STATISTICA: TOP 10 ABBINAMENTI PIÙ FREQUENTI"
Scrivi "Analisi dal " & DataEstrazione(ini) & " ad oggi sulla ruota di " & NomeRuota(r)
Scrivi "__________________________________________________________________________"
Scrivi
' Gestione del ciclo: se l'utente sceglie 0 fa da 1 a 90, altrimenti analizza solo la spia scelta
Dim spiaInizio, spiaFine
If spiaScelta = 0 Then
spiaInizio = 1
spiaFine = 90
Else
spiaInizio = spiaScelta
spiaFine = spiaScelta
End If
For sp = spiaInizio To spiaFine
Messaggio " Elaborazione Spia: " & sp
Call AvanzamentoElab(spiaInizio, spiaFine, sp)
ReimpostaArray num ' Azzera i dati delle presenze per la nuova spia
co = 0 ' Contatore dei casi in cui è uscita la spia
' 1. Conteggio delle presenze nei 6 colpi successivi
For es = ini To fin
If Posizione(es, r, sp) > 0 Then
co = co + 1
For a = es + 1 To es + 6
If a > fin Then Exit For
For e = 1 To 5
n = Estratto(a, r, e)
num
Next
Next
End If
Next
' Se la spia è uscita almeno una volta, ordiniamo i dati e creiamo la Top 10
If co > 0 Then
' 2. Popoliamo la matrice d'appoggio per l'ordinamento
For i = 1 To 90
classifica(i, 1) = i ' Salva il Numero Lotto
classifica(i, 2) = num(i) ' Salva le sue Presenze totali
Next
' 3. Algoritmo di ordinamento decrescente (dalle presenze più alte alle più basse)
For i = 1 To 89
For j = i + 1 To 90
If classifica(j, 2) > classifica(i, 2) Then
' Scambia il numero
tempNum = classifica(i, 1)
classifica(i, 1) = classifica(j, 1)
classifica(j, 1) = tempNum
' Scambia le presenze
tempPres = classifica(i, 2)
classifica(i, 2) = classifica(j, 2)
classifica(j, 2) = tempPres
End If
Next
Next
' 4. Stampa della Tabella dei Top 10
Scrivi "NUMERO SPIA: " & Format2(sp) & " su " & NomeRuota(r) & " (" & co & " casi rilevati nei successivi 6 colpi)"
Scrivi "--------------------------------------------------------------------------"
Scrivi "Posiz. | Numero Abbinato | Presenze (Uscite) | Percentuale d'Uscita"
Scrivi "--------------------------------------------------------------------------"
For i = 1 To 10 ' Prende solo i primi 10 della classifica ordinata
percentualeUscita = Round((classifica(i, 2) / co) * 100, 2)
Scrivi " " & Format2(i) & "° | " & Format2(classifica(i, 1)) & " | " & Format2(classifica(i, 2)) & " volte | " & Format2(percentualeUscita) & " %"
Next
Scrivi "__________________________________________________________________________"
Scrivi
End If
Next
End Sub
' Funzione di supporto per azzerare l'array ad ogni ciclo
Sub ReimpostaArray(ByRef vettore)
Dim k
For k = 0 To UBound(vettore)
vettore(k) = 0
Next
End Sub