Novità

x Luigi

i legend

Premium Member
Ciao Luigi , potresti aiutarmi con lo script?
Al momento ho realizzato uno script di matematica sommativa'
Purtroppo sono fermo alla ricerca perchè non so come trovare le frequenze nei colpi di ricerca.
Ti posto lo script semplificato, in quanto è piu flessibile, ma se vuoi vedere quello completo è dargli qualche correzione mi farebbe piacere , mi sono divertito a scriverlo.
Nel mezzo del codice nella parte remmata c'è quello che vorrei ottenere.
So che fai gli script solo quando c'è qualcosa che ti colpisce ,se questo non dovesse essere il caso , potresti come sempre
indicarmi come fare? poi lo faccio io se ritiene che è nelle mie conoscenze attuali?
P.S: lo schema dello script è simile agli altri, non perchè mi manca la fantasia ,ma perchè dato che sto imparando adesso,
cerco solo di farlo con l'impostazione coretta, :)
Grazie
 
Senza Codice:)
Sono solo prove devo verificare se i risultati sono corretti.:)
ecco il primo più lento negli inserimenti
più veloce nell'elaborazione
Codice:
Option Explicit
Sub Main
    Dim Ini,Fin,Es
    Dim E1,E2,E3,aNum
    'Dim aRuote,aPos
    Dim r1,r2,r3
    Dim p1,p2,p3
    Dim Ris,RisSto
    Dim nCasi,TrovaCasi,nColpi
    Dim aTitolo
    Dim Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr
    MsgBox "seleziona i tre elementi base"
    If ImpostaParametri(r1,p1,r2,p2,r3,p3,TrovaCasi,nColpi) = False Then
        MsgBox"I Parametri Inseriti Non Sono Corretti", vbCritical
        Exit Sub
    End If
    
    E1 = Estratto(EstrazioneFin,r1,p1)
    E2 = Estratto(EstrazioneFin,r2,p2)
    E3 = Estratto(EstrazioneFin,r3,p3)
    aNum = Array("",E1,E2,E3,Vert(E1),Vert(E2),Vert(E3)) ' qui inserisco gli elementi che vorrei utilizzare in un array
    'aRuote = Array("",r1,r2,r3)
    'aPos = Array("",p1,p2,p3)
    Ini = EstrazioneFin - 2500
    Fin = EstrazioneFin
    ' qui scrivo la formula faccio questo è solo un  esempi0
    ' posso scrivere qualsiasi formula io voglia
    ' l'importante è ricopiarla in RisSto e in 
    Ris = Fuori90(Distanza(E1,E2) + Figura(E3*E1)) ' ricopiare tra virgolette 4 righe sotto
    Scrivi "Elementi utilizzati    " & "(E1)=" & p1 & SiglaRuota(r1) & " ." & "(E2)=" & p2 & SiglaRuota(r2) & " ." & "(E2)=" & p3 & SiglaRuota(r3)
    Scrivi
    Scrivi "Fuori90(Distanza(E1,E2) + Figura(E3*E1))"&"="&Ris
    Scrivi
    
    aTitolo = Array("","Id","Metodo","Adattatore","Pronostico","BA","CA","FI","GE","MI","NA","PA","RO","TO","VE","NZ","Media")
    InitTabella aTitolo,RGB(240,240,240),,3,vbBlack

    nCasi = 0
    
    For Es = Fin To Ini Step - 1
        E1 = Estratto(Es,r1,p1)
        E2 = Estratto(Es,r2,p2)
        E3 = Estratto(Es,r3,p3)
        RisSto = Fuori90(Distanza(E1,E2) + Figura(E3*E1)) ' qui ricopiare espressione di ricerca
        If RisSto = Ris Then
            nCasi = nCasi + 1
            If nCasi > TrovaCasi Then Exit For
            ' qui vorrei:
            ' calcolare la frequenza dei numeri fissi        da 1 a 90   ->90
            ' sommare al primo elemento degli array  i fissi da 1 a 90
            ' ripetere la stessa operazione fino al sesto elemento dell'array aNum
            ' fare un ciclo :
            'for  x= 1 to ubound(anum)-1
            'for y=x+1 to ubound(a num)
            'sommativo= x+y  ' per la stringa prendo l'elementoBase non quello trasformato,quello si utilizza solo per la ricerca
            ' combino l'array in tre, fino a 6 elementi
            ' in tutto poco meno di 8000 metodi
            ' tutto da inserire nella tabella
            
            Scrivi Format2(nCasi) & "     " & DataEstrazione(Es) & "     " & Format2(E1) & "." & Format2(E2) & "." & Format2(E3) & "=" & RisSto
         
        ReDim aRisultato(16)
            ' voci Tabella: Id= lo sviluppo, Metodo= stringaSviluppoEstratti,Adattatore=il numero sommato agli estratti,Pronostico=Risultato
            'prBA= CasiPositivi sulla ruota.....MediPr= somma di Tutti i Positivi/Le ruote
            Call AlimentaArrayRisultato(aRisultato,Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr)
            Call AddRigaTabella(aRisultato,,,3)

        End If
    Next
     Scrivi
    
    CreaTabellaOrdinabile
End Sub
Sub AlimentaArrayRisultato(aRisultato,Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr)
    aRisultato(1) = Id
    aRisultato(2) = Metodo
    aRisultato(3) = Adattatore
    aRisultato(4) = Pronostico
    aRisultato(5) = PrBA
    aRisultato(6) = PrCA
    aRisultato(7) = PrFI
    aRisultato(8) = PrGE
    aRisultato(9) = PrMI
    aRisultato(10) = PrNA
    aRisultato(11) = PrPA
    aRisultato(12) = PrRO
    aRisultato(13) = PrTo
    aRisultato(14) = PrVE
    aRisultato(15) = PrNZ
    aRisultato(16) = MediaPr
End Sub

Function ImpostaParametri(r1,p1,r2,p2,r3,p3,trovaCasi,nColpi)
    Dim bRet
    r1 = ScegliRuota
    If r1 > 0 Then
        p1 = ScegliPosizione
        If p1 > 0 Then
            r2 = ScegliRuota
            If r2 > 0 Then
                p2 = ScegliPosizione
                If p2 > 0 Then
                    r3 = ScegliRuota
                    If r3 > 0 Then
                        p3 = ScegliPosizione
                        If p3 > 0 Then
                        trovaCasi=NumeroCasi
                        If trovaCasi>0 Then
                        nColpi=NumeroColpi
                        If nColpi>0 Then
                            bRet = True
                        End If
                        End If 
                        End If
                    End If
                End If
            End If
        End If
    End If
    ImpostaParametri = bRet
End Function
Function ScegliPosizione
    Dim aPos,Ris
    aPos = Array("","1","2","3","4","5")
    Ris = ScegliOpzioneMenu(aPos,1,"ScegliPosizione")
    ScegliPosizione = Ris
End Function
Function NumeroCasi
    Dim x,ris
    ReDim aCasi(30)
    For x = 1 To 30
        aCasi(x) = x
    Next
    ris = ScegliOpzioneMenu(aCasi,18,"Quanti Casi vuoi analizzare?")
    NumeroCasi = ris
End Function
Function NumeroColpi
    Dim x,ris
    ReDim aCasi(30)
    For x = 1 To 30
        aCasi(x) = x
    Next
    ris = ScegliOpzioneMenu(aCasi,9,"Quanti Colpi vuoi analizzare?")
    NumeroColpi = ris
End Function

piu veloce nell'input lento lento lento nell'output
Codice:
Option Explicit
Sub Main
    Dim Ini,Fin,Es
    Dim iE1,iE2,iE3
    Dim nE1,nE2,nE3
    Dim sE1,sE2,sE3,aNum
    'Dim aRuote,aPos
    Dim r1,r2,r3
    Dim p1,p2,p3
    Dim Ris,RisSto
    Dim nCasi,TrovaCasi,nColpi
    Dim aTitolo
    Dim Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr
    MsgBox "seleziona i tre elementi base"
    If ImpostaParametri(iE1,iE2,iE3,TrovaCasi,nColpi) = False Then
        MsgBox"I Parametri Inseriti Non Sono Corretti",vbCritical
        Exit Sub
    End If
    nE1 = GetEstratto(EstrazioneFin,iE1)
    nE2 = GetEstratto(EstrazioneFin,iE2)
    nE2 = GetEstratto(EstrazioneFin,iE2)
    sE1 = ScriviElemento(iE1)
    sE2 = ScriviElemento(iE2)
    sE3 = ScriviElemento(iE3)
    'aNum = Array("",nE1,nE2,nE3,Vert(nE1),Vert(nE2),Vert(nE3)) ' qui inserisco gli elementi che vorrei utilizzare in un array
    'aRuote = Array("",r1,r2,r3)
    'aPos = Array("",p1,p2,p3)
    Ini = EstrazioneFin - 2500
    Fin = EstrazioneFin
    ' qui scrivo la formula faccio questo è solo un  esempi0
    ' posso scrivere qualsiasi formula io voglia
    ' l'importante è ricopiarla in RisSto e in
    Ris = Fuori90(Distanza(nE1,nE2) + Figura(nE3*nE1)) ' ricopiare tra virgolette 4 righe sotto
    Scrivi "Elementi utilizzati    " & sE1 & "     " & sE2 & "     " & sE3
    Scrivi
    Scrivi "Fuori90(Distanza(E1,E2) + Figura(E3*E1))" & "=" & Ris
    Scrivi
    aTitolo = Array("","Id","Metodo","Adattatore","Pronostico","BA","CA","FI","GE","MI","NA","PA","RO","TO","VE","NZ","Media")
    InitTabella aTitolo,RGB(240,240,240),,3,vbBlack
    nCasi = 0
    For Es = Fin To Ini Step - 1
    Messaggio "Sto lavorando per voi :-)" & nCasi
    AvanzamentoElab Ini,Fin,Es
        nE1 = GetEstratto(Es,iE1)
        nE2 = GetEstratto(Es,iE2)
        nE3 = GetEstratto(Es,iE3)
        RisSto = Fuori90(Distanza(nE1,nE2) + Figura(nE3*nE1)) ' qui ricopiare espressione di ricerca
        If RisSto = Ris Then
            nCasi = nCasi + 1
            If nCasi > TrovaCasi Then Exit For
            ' qui vorrei:
            ' calcolare la frequenza dei numeri fissi        da 1 a 90   ->90
            ' sommare al primo elemento degli array  i fissi da 1 a 90
            ' ripetere la stessa operazione fino al sesto elemento dell'array aNum
            ' fare un ciclo :
            'for  x= 1 to ubound(anum)-1
            'for y=x+1 to ubound(a num)
            'sommativo= x+y  ' per la stringa prendo l'elementoBase non quello trasformato,quello si utilizza solo per la ricerca
            ' combino l'array in tre, fino a 6 elementi
            ' in tutto poco meno di 8000 metodi
            ' tutto da inserire nella tabella
            Scrivi Format2(nCasi) & "     " & DataEstrazione(Es) & "     " & Format2(nE1) & "." & Format2(nE2) & "." & Format2(nE3) & "=" & RisSto
            ReDim aRisultato(16)
            ' voci Tabella: Id= lo sviluppo, Metodo= stringaSviluppoEstratti,Adattatore=il numero sommato agli estratti,Pronostico=Risultato
            'prBA= CasiPositivi sulla ruota.....MediPr= somma di Tutti i Positivi/Le ruote
            Call AlimentaArrayRisultato(aRisultato,Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr)
            Call AddRigaTabella(aRisultato,,,3)
        End If
    Next
    Scrivi
    CreaTabellaOrdinabile
End Sub
Sub AlimentaArrayRisultato(aRisultato,Id,Metodo,Adattatore,Pronostico,PrBA,PrCA,PrFI,PrGE,PrMI,PrNA,PrPA,PrRO,PrTo,PrVE,PrNZ,MediaPr)
    aRisultato(1) = Id
    aRisultato(2) = Metodo
    aRisultato(3) = Adattatore
    aRisultato(4) = Pronostico
    aRisultato(5) = PrBA
    aRisultato(6) = PrCA
    aRisultato(7) = PrFI
    aRisultato(8) = PrGE
    aRisultato(9) = PrMI
    aRisultato(10) = PrNA
    aRisultato(11) = PrPA
    aRisultato(12) = PrRO
    aRisultato(13) = PrTo
    aRisultato(14) = PrVE
    aRisultato(15) = PrNZ
    aRisultato(16) = MediaPr
End Sub
Function ImpostaParametri(E1,E2,E3,trovaCasi,nColpi)
    Dim bRet
    E1 = SelezionaElemento
    If E1 > 0 Then
        E2 = SelezionaElemento
        If E2 > 0 Then
            E3 = SelezionaElemento
            If E3 > 0 Then
                trovaCasi = NumeroCasi
                If trovaCasi > 0 Then
                    nColpi = NumeroColpi
                    If nColpi > 0 Then
                        bRet = True
                    End If
                End If
            End If
        End If
    End If
    ImpostaParametri = bRet
End Function
Function NumeroCasi
    Dim x,ris
    ReDim aCasi(30)
    For x = 1 To 30
        aCasi(x) = x
    Next
    ris = ScegliOpzioneMenu(aCasi,18,"Quanti Casi vuoi analizzare?")
    NumeroCasi = ris
End Function
Function NumeroColpi
    Dim x,ris
    ReDim aCasi(30)
    For x = 1 To 30
        aCasi(x) = x
    Next
    ris = ScegliOpzioneMenu(aCasi,9,"Quanti Colpi vuoi analizzare?")
    NumeroColpi = ris
End Function
Function SelezionaElemento
    ReDim aVoci(55)
    Dim R,P,Id,Indice
    Dim Ris
    For Id = 1 To UBound(aVoci)
        Indice = 0
        For R = 1 To 12
            If R = 11 Then R = 12
            For P = 1 To 5
                Indice = Indice + 1
                aVoci(Indice) = P & SiglaRuota(R)
            Next
        Next
    Next
    Ris = ScegliOpzioneMenu(aVoci,1,"GetElemento")
    SelezionaElemento = CInt(Ris)
End Function
Function GetEstratto(Estrazione,IdEstratto)
    Dim k,R,P
    ReDim aEstrazioni(Estrazione,55)
    Dim NewPos
    NewPos = 0
    For R = 1 To 12
        If R = 11 Then R = 12
        For P = 1 To 5
            NewPos = NewPos + 1
            aEstrazioni(Estrazione,NewPos) = Estratto(Estrazione,R,P)
        Next
    Next
    GetEstratto = CInt(aEstrazioni(Estrazione,IdEstratto))
End Function
Function ScriviElemento(Indice)
    ReDim aVoci(55)
    Dim R,P,Id,Ind
    Dim Ris
    For Id = 1 To UBound(aVoci)
        Ind = 0
        For R = 1 To 12
            If R = 11 Then R = 12
            For P = 1 To 5
                Ind = Ind + 1
                aVoci(Ind) = P & SiglaRuota(R)
            Next
        Next
    Next
    Ris = aVoci(Indice)
    ScriviElemento = Ris
End Function
 
ciao Legend seguire il tuo script per me è piu faticoso rispetto al dirmi direttamente cosa ti servirebbe.
Il consiglio che ti posso dare è che se sbagli nello script l'unica cosa che succede è che non funziona , niente di grave .. uno se ne accorge e erca dove
ha sbagliato per poi riprovare ...i concetti di base li hai come vedi gli script sfruttano piu o meno tutti le stesse istruzioni , si tratta di trovare un modo logico ed
efficiente per congengarle .. se si è compreso il significato delle istruzioni lo script è solo una questione di logica.
Per fare una metafora tu sai benissimo la differenza tra un cucchiaio e una forchetta è per questo che a seconda del piatto usi la posata giusta.
Stessa cosa con gli script se conosci a cosa servono le istruzioni adoperarle è una questione di logica.
Percio ti esorto a provare e riprovare da solo.
Una cosa molto utile nell'elaborazione degli script è l'uso del debug che consente di eseguire passo passo le istruzioni dello script mentre
vengono eseguite.
Per consentire il debug è necessario aver installato vb6 oppure Excel .. non mi ricordo se io abbia mai spiegato come usare il debug.
nel caso daro ragguagli.
Ciao
 
al momento sono sprovisto di entrambi i programmi :(
Grazie per la risposta Luigi, al momento Disaronno mi da una mano con i fissi, ma per il resto, non so da che parte iniziare ,mi mancano gli esempi:(
A dopo, ti aggiorno, e ti spiego bene cosa voglio fare...
Ciao:)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto