bauman
Member
Buongiorno a tutto il forum,
non rieso a correggere questo script che ho cercato di creare con l'AI del pc e mi da errori su alcune variabili e/o funzioni che non fanno parte di spaziometria pur ammettendo che ci sono, quindi non so come correggere, ecco il listato
avrei bisogno di aiuto,
chiaramente saluti
Bauman
non rieso a correggere questo script che ho cercato di creare con l'AI del pc e mi da errori su alcune variabili e/o funzioni che non fanno parte di spaziometria pur ammettendo che ci sono, quindi non so come correggere, ecco il listato
Codice:
Sub Main()
' Dichiarazione esplicita di tutte le variabili (Standard VBScript per Spaziometria)
Dim Nu(3), Ru(1), Poste(3)
Dim Inizio, Fine, Ruota, Colpi
Dim K, RetEsito, RetColpi, RetEstratti, RetId
Dim i, j, TempNum, TempFreq
Dim ContatoreVincite, ContatoreEsiti
Dim MatriceFrequenze(90, 2)
Dim DblPercentuale
Dim StrPercentualeFormattata
' Variabili per il calcolo dell'intervallo medio e massimo
Dim UltimoConcorsoPositivo, SommaIntervalli, Distanza, IntervalloMedio
Dim IntervalloMassimo, StrIntervalloMedioFormattato
' Variabili per il filtro dei mesi richiesto
Dim StringaMesi, IntMesi, QuanteEstrazioni
' Vettori per la gestione nativa delle intestazioni della tabella
Dim aTitoli(7), aAllineamento(7)
' --- SCELTA DELLA RUOTA INTERATTIVA DA INTERFACCIA ---
Ruota = ScegliRuota
' Se l'utente preme annulla o chiude la finestra (valore minore o uguale a 0 o non valido)
If Ruota <= 0 Or Ruota > 12 Then
Ruota = BA_ ' Imposta Bari come ruota di default/riserva
End If
' --- FILTRO INTERATTIVO PER IL PERIODO IN MESI ---
StringaMesi = InputBox("Quanti mesi a ritroso vuoi analizzare?", "IMPOSTA PERIODO DI ANALISI", "6")
' Valutazione e conversione del valore inserito dall'utente
If IsNumeric(StringaMesi) Then
IntMesi = CInt(StringaMesi)
If IntMesi <= 0 Then IntMesi = 6 ' Valore di sicurezza se inserito 0 o negativi
Else
IntMesi = 6 ' Valore di riserva se l'utente non inserisce un numero o annulla
End If
' Nel gioco del Lotto ci sono circa 13-14 estrazioni al mese
QuanteEstrazioni = IntMesi * 13.5
QuanteEstrazioni = Int(QuanteEstrazioni)
Colpi = 3 ' Finestra temporale di verifica richiesta (3 estrazioni)
' Definizione delle poste per la verifica statistica
Poste(2) = 1 ' Verifica Ambo
Poste(3) = 1 ' Verifica Terno
Ru(1) = Ruota
' Impostazione dell'intervallo temporale d'archivio basato sul filtro scelto
Fine = EstrazioneFin
Inizio = Fine - QuanteEstrazioni
' Controllo di sicurezza per evitare di andare oltre l'inizio dell'archivio storico
If Inizio < 1 Then Inizio = 1
Call Scrivi("==========================================================================", True)
Call Scrivi(" SCRIPT SPAZIOMETRIA - REPORT AVANZATO CON TABELLA RIASSUNTIVA", True)
Call Scrivi("==========================================================================", True)
Call Scrivi("Ruota scelta per l'analisi: " & NomeRuota(Ruota), True)
Call Scrivi("Mesi impostati a ritroso: " & IntMesi & " (" & QuanteEstrazioni & " estrazioni storiche)", True)
Call Scrivi("Periodo dal: " & DataEstrazione(Inizio) & " al " & DataEstrazione(Fine))
Call Scrivi("Colpi di verifica impostati: " & Colpi)
Call Scrivi("--------------------------------------------------------------------------")
' --- ALGORITMO DI SELEZIONE DEI 3 NUMERI PIÙ FREQUENTI ---
For i = 1 To 90
MatriceFrequenze(i, 1) = i
MatriceFrequenze(i, 2) = EstrattoFrequenza(Ruota, i, Inizio, Fine)
Next
' Ordinamento per frequenza decrescente (Bubble Sort standard di Spaziometria)
For i = 1 To 89
For j = i + 1 To 90
If MatriceFrequenze(i, 2) < MatriceFrequenze(j, 2) Then
TempNum = MatriceFrequenze(i, 1)
TempFreq = MatriceFrequenze(i, 2)
MatriceFrequenze(i, 1) = MatriceFrequenze(j, 1)
MatriceFrequenze(i, 2) = MatriceFrequenze(j, 2)
MatriceFrequenze(j, 1) = TempNum
MatriceFrequenze(j, 2) = TempFreq
End If
Next
Next
' Assegnazione dei 3 numeri più caldi rilevati nell'archivio
Nu(1) = MatriceFrequenze(1, 1)
Nu(2) = MatriceFrequenze(2, 1)
Nu(3) = MatriceFrequenze(3, 1)
Call Scrivi("I 3 numeri più frequenti rilevati nel periodo sono: " & StringaNumeri(Nu), True)
Call Scrivi("Frequenze rispettive: " & MatriceFrequenze(1, 2) & ", " & MatriceFrequenze(2, 2) & ", " & MatriceFrequenze(3, 2))
Call Scrivi("--------------------------------------------------------------------------")
Call Scrivi("ELENCO ESCLUSIVO DEGLI ESITI POSITIVI RISCONTRATI:", True)
Call Scrivi("--------------------------------------------------------------------------")
ContatoreVincite = 0
ContatoreEsiti = 0
UltimoConcorsoPositivo = 0
SommaIntervalli = 0
IntervalloMassimo = 0
' Ciclo di verifica retroattiva sulle estrazioni dell'archivio
For K = Inizio To (Fine - Colpi)
' Funzione nativa degli archivi di Spaziometria per il controllo esiti
If VerificaEsito(Nu, Ru, K + 1, 2, Colpi, , RetEsito, RetColpi, RetEstratti, RetId) Then
ContatoreVincite = ContatoreVincite + 1
' Calcolo della distanza temporale tra esiti positivi successivi
If UltimoConcorsoPositivo > 0 Then
Distanza = K - UltimoConcorsoPositivo
SommaIntervalli = SommaIntervalli + Distanza
' Calcolo dinamico del picco massimo di ritardo tra gli esiti
If Distanza > IntervalloMassimo Then IntervalloMassimo = Distanza
Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | Distanza dal precedente: " & Distanza & " estr.")
Else
Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | (Primo esito del ciclo)")
End If
' Memorizza il concorso spia corrente come punto di partenza per il prossimo calcolo
UltimoConcorsoPositivo = K
End If
ContatoreEsiti = ContatoreEsiti + 1
Next
' --- ELABORAZIONE VARIABILI DI FORMATTAZIONE E MEDIE ---
' 1. Calcolo percentuale di copertura
If ContatoreEsiti > 0 Then
DblPercentuale = (ContatoreVincite / ContatoreEsiti) * 100
Else
DblPercentuale = 0
End If
StrPercentualeFormattata = FormattaNumero(DblPercentuale, 2)
' 2. Calcolo intervallo medio
If ContatoreVincite > 1 Then
IntervalloMedio = SommaIntervalli / (ContatoreVincite - 1)
StrIntervalloMedioFormattato = FormattaNumero(IntervalloMedio, 1)
Else
StrIntervalloMedioFormattato = "N/D"
End If
' --- COSTRUZIONE DELLA TABELLA CON COMANDI NATIVI SPAZIOMETRIA ---
Call Scrivi("")
Call Scrivi("TABELLA RIASSUNTIVA DELLE METRICHE:", True)
Call Scrivi("")
' Definizione dei titoli delle colonne (vettore base 1)
aTitoli(1) = "Ruota Analizzata"
aTitoli(2) = "Terzina Rilevata"
aTitoli(3) = "Casi Totali"
aTitoli(4) = "Casi Vincenti"
aTitoli(5) = "Copertura %"
aTitoli(6) = "Attesa Media (Estr.)"
aTitoli(7) = "Ritardo Max (Estr.)"
' Impostazione dell'allineamento (2 = Centrato)
For i = 1 To 7
aAllineamento(i) = 2
Next
' Inizializzazione della tabella nativa (InitTabella sostituisce SetInizioTabella)
Call InitTabella(aTitoli, vbYellow, , , vbBlack)
' Inserimento dei valori nella riga dati della griglia
Call AddRigaTabella
Call SetCelTabella(1, NomeRuota(Ruota))
Call SetCelTabella(2, StringaNumeri(Nu))
Call SetCelTabella(3, ContatoreEsiti)
Call SetCelTabella(4, ContatoreVincite)
Call SetCelTabella(5, StrPercentualeFormattata & "%")
Call SetCelTabella(6, StrIntervalloMedioFormattato)
Call SetCelTabella(7, IntervalloMassimo)
' Disegno finale della tabella a video
Call CreaTabella
End Sub
avrei bisogno di aiuto,
chiaramente saluti
Bauman