Novità

RicercaLunghetteNET

Edoardo_95

Advanced Member
Da questo momento so che si scatenerà il disastro. Prima di procedere con il resto dello script farò una premessa per evitare inutili discussioni.

Essere un buon programmatore e fare un buon programma implica diverse cose, ma soprattutto una:

  1. Evitare come la peste i cicli For nidificati.

Bene. Detto ciò, io non ho mantenuto questa premessa ed il perché è semplicissimo. In alcune circostanze bisogna scendere a patti con il codice pur di ottenere il risultato sperato.

Ho provato vie alternative ? ASSOLUTAMENTE SI.
Funzionavano? ASSOLUTAMENTE SI.
Con le stesse tempistiche? ASSOLUTAMENTE NO.

Parliamo di discrepanze temporali di alcuni minuti addirittura e non di secondi. Quindi so già che non è un codice elegante, so già che che si potrebbe fare diversamente so già bla bla bla bla.

Magari ci sarà un modo più elegante e con le stesse performance ma per ora questo passa il convento. Pìu in la vedrò di mettere lo smoking al codice

Continuiamo :

Nella Sub Main dovremmo dichiarare queste variabili

Codice:
Dim n1,n2,n3,n4,n5 'rappresentano i numeri della lunghetta
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5 
   Dim RitardoMinimo
 

Edoardo_95

Advanced Member
Da questo momento so che si scatenerà il disastro. Prima di procedere con il resto dello script farò una premessa per evitare inutili discussioni.

Essere un buon programmatore e fare un buon programma implica diverse cose, ma soprattutto una:

  1. Evitare come la peste i cicli For nidificati.

Bene. Detto ciò, io non ho mantenuto questa premessa ed il perché è semplicissimo. In alcune circostanze bisogna scendere a patti con il codice pur di ottenere il risultato sperato.

Ho provato vie alternative ? ASSOLUTAMENTE SI.
Funzionavano? ASSOLUTAMENTE SI.
Con le stesse tempistiche? ASSOLUTAMENTE NO.

Parliamo di discrepanze temporali di alcuni minuti addirittura e non di secondi. Quindi so già che non è un codice elegante, so già che che si potrebbe fare diversamente so già bla bla bla bla.

Magari ci sarà un modo più elegante e con le stesse performance ma per ora questo passa il convento. Pìu in la vedrò di mettere lo smoking al codice

Continuiamo :

Nella Sub Main dovremmo dichiarare queste variabili

Codice:
Dim n1,n2,n3,n4,n5 'rappresentano i numeri della lunghetta
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5
   Dim RitardoMinimo

Una volta fatto ciò imposteremo il valore del RitardoMinimo

Supponiamo di aver impostato QuantitaLunghette pari a 50

il RitardoMinimo sarà uguale al valore di ritardo posto al 50 "posto" dell'array.

Codice:
RitardoMinimo = Lunghette(QuantitaLunghette).ritardo


Il primo numero della lunghetta sarà dato dal valore totale dei numeri meno la classe della lunghetta meno uno [90 - (5-1)]

Quindi ne scaturirà che per generare tutte le cinquine su una base numerica di 90 numeri il codice è il seguente :

Codice:
 For n1 = 1 To 86
     For n2 = n1 + 1 To 87
        For n3 = n2 + 1 To 88
            For n4 = n3 + 1 To 89
                For n5 = n4 + 1 To 90
                
                Next
            Next
        Next
    Next
 Next
 

Edoardo_95

Advanced Member
Impostiamo per ogni valore (da 1 a 5) della variabile "Lunghetta" (Non confondetelo con l'array Lunghette di classi lunghette) il valore assunto dalle variabili n1,n2,n3,n4,n5.

Codice:
 For n1 = 1 To 86
 Lunghetta(1) = n1
     For n2 = n1 + 1 To 87
     Lunghetta(2) = n2
        For n3 = n2 + 1 To 88
        Lunghetta(3) = n3
            For n4 = n3 + 1 To 89
            Lunghetta(4) = n4
                For n5 = n4 + 1 To 90
                Lunghetta(5) = n5
                
                
                Next
            Next
        Next
    Next
 Next


Ed iniziamo ad inserire all'interno dei cicli for le condizioni di controllo.

Codice:
   For n1 = 1 To 86
      Lunghetta(1) = n1
      Ritardo1 = RitardoEstratti(n1) 'Imposto il ritardo iniziale prendendo il valore del ritardo del numero n1
      If Ritardo1 > RitardoMinimo Then 'verifico se il ritardo supera il ritardominimo impostato in precedenza
         For n2 = n1 + 1 To 87
         Lunghetta(2) = n2
            Ritardo2 = Ritardo1 ' imposto il ritardo del secondo numero (Ritardo2) pari al ritardo del primo numero (ritardo1)
            If Ritardo2 > RitardoEstratti(n2) Then ' se il ritardo del 2 numero (pari a quello del primo numero) è maggiore del ritardo di n2 
               Ritardo2 = RitardoEstratti(n2) ' assoumo il valore più basso
            End If
            ' e cosi via..
            
            
            
            For n3 = n2 + 1 To 88
               Lunghetta(3) = n3
               For n4 = n3 + 1 To 89
                  Lunghetta(4) = n4
                  For n5 = n4 + 1 To 90
                     Lunghetta(5) = n5
                  Next
               Next
            Next
         Next
      End If
   Next


Fin quando non raggiungiamo questo risultato :

Codice:
   Dim n1,n2,n3,n4,n5
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5
   Dim RitardoMinimo
   RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
   For n1 = 1 To 86
      Lunghetta(1) = n1
      Call AvanzamentoElab(1,86,n1)
      If ScriptInterrotto Then Exit For
      Ritardo1 = RitardoEstratti(n1)
      If Ritardo1 > RitardoMinimo Then
         For n2 = n1 + 1 To 87
            Lunghetta(2) = n2
            If ScriptInterrotto Then Exit For
            Ritardo2 = Ritardo1
            If Ritardo2 > RitardoEstratti(n2) Then
               Ritardo2 = RitardoEstratti(n2)
            End If
            If Ritardo2 > RitardoMinimo Then
               For n3 = n2 + 1 To 88
                  Lunghetta(3) = n3
                  If ScriptInterrotto Then Exit For
                  Ritardo3 = Ritardo2
                  If Ritardo3 > RitardoEstratti(n3) Then
                     Ritardo3 = RitardoEstratti(n3)
                  End If
                  If Ritardo3 > RitardoMinimo Then
                     For n4 = n3 + 1 To 89
                        Lunghetta(4) = n4
                        If ScriptInterrotto Then Exit For
                        Ritardo4 = Ritardo3
                        If Ritardo4 > RitardoEstratti(n4) Then
                           Ritardo4 = RitardoEstratti(n4)
                        End If
                        If Ritardo4 > RitardoMinimo Then
                           For n5 = n4 + 1 To 90
                              Lunghetta(5) = n5
                              If ScriptInterrotto Then Exit For
                              Ritardo5 = Ritardo4
                              If Ritardo5 > RitardoEstratti(n5) Then
                                 Ritardo5 = RitardoEstratti(n5)
                              End If




                           End If
                        Next
                     End If
                  Next
               End If
            Next
         End If
      Next
   End If
Next
 

Edoardo_95

Advanced Member
Cosa succede quando arriviamo all'ultimo controllo?

Codice:
If Ritardo5 > RitardoMinimo Then

End if


Qui proverò a spiegare nel miglior modo possibile ma purtroppo il concetto è molto contorto.

  1. Scorro tramite un ciclo for da 1 alla quantità di lunghette
  2. Se il ritardo del 5 numero è maggiore del ritardo corrispondente all'indice del ciclo for precedente
  3. Effettuo uno shift dell'array Lunghette di un posto scorrendo dal numero massimo di lunghette fino ad 1
  4. imposto all'indice del ciclo for iniziale la stringa della lunghetta ed il valore del ritardo
  5. Reimposto il ritardominimo
  6. esco dal ciclo for che va da 1 al numero di lunghette
Otteniamo qualcosa di genere :

Codice:
   For k = 1 To QuantitaLunghette
      If Ritardo5 > Lunghette(k).ritardo Then
         For q = QuantitaLunghette To k + 1 Step - 1
            Lunghette(q).sNumeri = Lunghette(q - 1).sNumeri
            Lunghette(q).Ritardo = Lunghette(q - 1).Ritardo
         Next
         Lunghette(k).sNumeri = StringaNumeri(Lunghetta)
         Lunghette(k).Ritardo = Ritardo5
         RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
         Exit For
      End If
   Next
 

Edoardo_95

Advanced Member
Arriviamo a questo punto

Codice:
Option Explicit

Class clsLunghetta
   Private mSNumeri
   Private mRitardo
   Public Property Let sNumeri(Value)
      mSNumeri = Value
   End Property
   Public Property Get sNumeri()
      sNumeri = mSNumeri
   End Property
   Public Property Let Ritardo(Value)
      mRitardo = Value
   End Property
   Public Property Get Ritardo()
      Ritardo = mRitardo
   End Property
End Class


Sub Main
   Dim Lunghette() : Dim QuantitaLunghette
   Dim aRuote,aRuoteSel,aPosizioni
   Dim k,q,y
   Dim RitardoEstratti(90)
   Dim Lunghetta(5)
   Call ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Call CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim n1,n2,n3,n4,n5
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5
   Dim RitardoMinimo
   RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
   For n1 = 1 To 86
      Lunghetta(1) = n1
      Call AvanzamentoElab(1,86,n1)
      If ScriptInterrotto Then Exit For
      Ritardo1 = RitardoEstratti(n1)
      If Ritardo1 > RitardoMinimo Then
         For n2 = n1 + 1 To 87
            Lunghetta(2) = n2
            If ScriptInterrotto Then Exit For
            Ritardo2 = Ritardo1
            If Ritardo2 > RitardoEstratti(n2) Then
               Ritardo2 = RitardoEstratti(n2)
            End If
            If Ritardo2 > RitardoMinimo Then
               For n3 = n2 + 1 To 88
                  Lunghetta(3) = n3
                  If ScriptInterrotto Then Exit For
                  Ritardo3 = Ritardo2
                  If Ritardo3 > RitardoEstratti(n3) Then
                     Ritardo3 = RitardoEstratti(n3)
                  End If
                  If Ritardo3 > RitardoMinimo Then
                     For n4 = n3 + 1 To 89
                        Lunghetta(4) = n4
                        If ScriptInterrotto Then Exit For
                        Ritardo4 = Ritardo3
                        If Ritardo4 > RitardoEstratti(n4) Then
                           Ritardo4 = RitardoEstratti(n4)
                        End If
                        If Ritardo4 > RitardoMinimo Then
                           For n5 = n4 + 1 To 90
                              Lunghetta(5) = n5
                              If ScriptInterrotto Then Exit For
                              Ritardo5 = Ritardo4
                              If Ritardo5 > RitardoEstratti(n5) Then
                                 Ritardo5 = RitardoEstratti(n5)
                              End If
                              If Ritardo5 > RitardoMinimo Then
                                 For k = 1 To QuantitaLunghette
                                    If Ritardo5 > Lunghette(k).ritardo Then
                                       For q = QuantitaLunghette To k + 1 Step - 1
                                          Lunghette(q).sNumeri = Lunghette(q - 1).sNumeri
                                          Lunghette(q).Ritardo = Lunghette(q - 1).Ritardo
                                       Next
                                       Lunghette(k).sNumeri = StringaNumeri(Lunghetta)
                                       Lunghette(k).Ritardo = Ritardo5
                                       RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
                                       Exit For
                                    End If
                                 Next
                              End If
                           Next
                        End If
                     Next
                  End If
               Next
            End If
         Next
      End If
   Next

End Sub


Sub ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Dim i,k
   Call ScegliRuote(aRuoteSel,aRuote)
   QuantitaLunghette = InputBox("Scelta quantià","Scegli la quantità delle Lunghette da rilevare (massimo 100)",50)
   ReDim Lunghette(QuantitaLunghette)
   For i = 1 To QuantitaLunghette
      Set Lunghette(i) = New clsLunghetta
   Next
   ReDim aPosizioni(5)
   For k = 1 To 5
      aPosizioni(k) = True
   Next
End Sub


Sub CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim IdEstr
   Dim Flag
   Dim Estrazione
   Dim r,e,n
   Dim EstrattoSingolo
   For IdEstr = 1 To EstrazioneFin
      If GetEstrazioneCompleta(IdEstr,Estrazione) Then
         Flag = True
         For r = 1 To 10
            If aRuote(r) Then
               If Estrazione(r,1) = 0 Then
                  Flag = False
               Else
                  For e = 1 To 5
                     If aPosizioni(e) Then
                        EstrattoSingolo = Estrazione(r,e)
                        RitardoEstratti(EstrattoSingolo) = - 1
                     End If
                  Next
               End If
            End If
         Next
         If Flag Then
            For n = 1 To 90
               RitardoEstratti(n) = RitardoEstratti(n) + 1
            Next
         End If
      End If
   Next
End Sub
 

Edoardo_95

Advanced Member
Manca un ultima cosa. Scrivere a video i risultati. Lo facciamo semplicemente in questo modo (non chiedetemi la spiegazione di questo codice fin troppo banale)

Codice:
   For y = 1 To QuantitaLunghette
      Call Scrivi("Formazione : " & Lunghette(y).sNumeri & " " & "Ritardo : " & Lunghette(y).ritardo & " Sorte estratto " & "Ruote di rilevamento : " & StringaRuote(aRuoteSel))
   Next
 

Edoardo_95

Advanced Member
Ecco il codice completo :

Codice:
Option Explicit
Class clsLunghetta
   Private mSNumeri
   Private mRitardo
   Public Property Let sNumeri(Value)
      mSNumeri = Value
   End Property
   Public Property Get sNumeri()
      sNumeri = mSNumeri
   End Property
   Public Property Let Ritardo(Value)
      mRitardo = Value
   End Property
   Public Property Get Ritardo()
      Ritardo = mRitardo
   End Property
End Class
Sub Main
   Dim Lunghette() : Dim QuantitaLunghette 'Array che conterrà le lunghette è la rispettiva quantità
   Dim aRuote,aRuoteSel,aPosizioni 'utili al rilevamento del ritardo
   Dim k,q,y ' variabili cicli for
   Dim RitardoEstratti(90) 'array contenente i ritardi dei 90 nuemri per estratto
   Dim Lunghetta(5)
   Call ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Call CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim n1,n2,n3,n4,n5
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5
   Dim RitardoMinimo
   RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
   For n1 = 1 To 86
      Lunghetta(1) = n1
      Call AvanzamentoElab(1,86,n1)
      If ScriptInterrotto Then Exit For
      Ritardo1 = RitardoEstratti(n1)
      If Ritardo1 > RitardoMinimo Then
         For n2 = n1 + 1 To 87
            Lunghetta(2) = n2
            If ScriptInterrotto Then Exit For
            Ritardo2 = Ritardo1
            If Ritardo2 > RitardoEstratti(n2) Then
               Ritardo2 = RitardoEstratti(n2)
            End If
            If Ritardo2 > RitardoMinimo Then
               For n3 = n2 + 1 To 88
                  Lunghetta(3) = n3
                  If ScriptInterrotto Then Exit For
                  Ritardo3 = Ritardo2
                  If Ritardo3 > RitardoEstratti(n3) Then
                     Ritardo3 = RitardoEstratti(n3)
                  End If
                  If Ritardo3 > RitardoMinimo Then
                     For n4 = n3 + 1 To 89
                        Lunghetta(4) = n4
                        If ScriptInterrotto Then Exit For
                        Ritardo4 = Ritardo3
                        If Ritardo4 > RitardoEstratti(n4) Then
                           Ritardo4 = RitardoEstratti(n4)
                        End If
                        If Ritardo4 > RitardoMinimo Then
                           For n5 = n4 + 1 To 90
                              Lunghetta(5) = n5
                              If ScriptInterrotto Then Exit For
                              Ritardo5 = Ritardo4
                              If Ritardo5 > RitardoEstratti(n5) Then
                                 Ritardo5 = RitardoEstratti(n5)
                              End If
                              If Ritardo5 > RitardoMinimo Then
                                 For k = 1 To QuantitaLunghette
                                    If Ritardo5 > Lunghette(k).ritardo Then
                                       For q = QuantitaLunghette To k + 1 Step - 1
                                          Lunghette(q).sNumeri = Lunghette(q - 1).sNumeri
                                          Lunghette(q).Ritardo = Lunghette(q - 1).Ritardo
                                       Next
                                       Lunghette(k).sNumeri = StringaNumeri(Lunghetta)
                                       Lunghette(k).Ritardo = Ritardo5
                                       RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
                                       Exit For
                                    End If
                                 Next
                              End If
                           Next
                        End If
                     Next
                  End If
               Next
            End If
         Next
      End If
   Next
   For y = 1 To QuantitaLunghette
      Call Scrivi("Formazione : " & Lunghette(y).sNumeri & " " & "Ritardo : " & Lunghette(y).ritardo & " Sorte estratto " & "Ruote di rilevamento : " & StringaRuote(aRuoteSel))
   Next

End Sub
Sub ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Dim i,k
   Call ScegliRuote(aRuoteSel,aRuote)
   QuantitaLunghette = InputBox("Scelta quantià","Scegli la quantità delle Lunghette da rilevare (massimo 100)",50)
   ReDim Lunghette(QuantitaLunghette)
   For i = 1 To QuantitaLunghette
      Set Lunghette(i) = New clsLunghetta
   Next
   ReDim aPosizioni(5)
   For k = 1 To 5
      aPosizioni(k) = True
   Next
End Sub
Sub CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim IdEstr
   Dim Flag
   Dim Estrazione
   Dim r,e,n
   Dim EstrattoSingolo
   For IdEstr = 1 To EstrazioneFin
      If GetEstrazioneCompleta(IdEstr,Estrazione) Then
         Flag = True
         For r = 1 To 10
            If aRuote(r) Then
               If Estrazione(r,1) = 0 Then
                  Flag = False
               Else
                  For e = 1 To 5
                     If aPosizioni(e) Then
                        EstrattoSingolo = Estrazione(r,e)
                        RitardoEstratti(EstrattoSingolo) = - 1
                     End If
                  Next
               End If
            End If
         Next
         If Flag Then
            For n = 1 To 90
               RitardoEstratti(n) = RitardoEstratti(n) + 1
            Next
         End If
      End If
   Next
End Sub

Testatelo
 

Edoardo_95

Advanced Member
L'unica cosa che non ricordo è come vengono gestite le ruote in spaziometria. Il ciclo va da 1 a 10 (credo di non tenere in considerazione la Nazionale), ma non ricordo l'indice di posizione... 11? 12? boh
 

Nikor

Premium Member
L'unica cosa che non ricordo è come vengono gestite le ruote in spaziometria. Il ciclo va da 1 a 10 (credo di non tenere in considerazione la Nazionale), ma non ricordo l'indice di posizione... 11? 12? boh
Ho usato tanto Spazio x i controlli perchè servito su un piatto d'argentoAggratis.
Gli script li ho usati poco perchè mi avvalgo di altri algo, e non vorrei scrivere cavolate; ma mi pare di ricordare che per le 11 ruote agivo cosi:
For R = 1 To 12
if R = 11 Then R = 12
Se non funge cancello.
 

Edoardo_95

Advanced Member
Ho usato tanto Spazio x i controlli perchè servito su un piatto d'argentoAggratis.
Gli script li ho usati poco perchè mi avvalgo di altri algo, e non vorrei scrivere cavolate; ma mi pare di ricordare che per le 11 ruote agivo cosi:
For R = 1 To 12
if R = 11 Then R = 12
Se non funge cancello.
Si ci siamo :D
 

genios

Advanced Member >PLATINUM<
Ecco il codice completo :

Codice:
Option Explicit
Class clsLunghetta
   Private mSNumeri
   Private mRitardo
   Public Property Let sNumeri(Value)
      mSNumeri = Value
   End Property
   Public Property Get sNumeri()
      sNumeri = mSNumeri
   End Property
   Public Property Let Ritardo(Value)
      mRitardo = Value
   End Property
   Public Property Get Ritardo()
      Ritardo = mRitardo
   End Property
End Class
Sub Main
   Dim Lunghette() : Dim QuantitaLunghette 'Array che conterrà le lunghette è la rispettiva quantità
   Dim aRuote,aRuoteSel,aPosizioni 'utili al rilevamento del ritardo
   Dim k,q,y ' variabili cicli for
   Dim RitardoEstratti(90) 'array contenente i ritardi dei 90 nuemri per estratto
   Dim Lunghetta(5)
   Call ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Call CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim n1,n2,n3,n4,n5
   Dim Ritardo1,Ritardo2,Ritardo3,Ritardo4,Ritardo5
   Dim RitardoMinimo
   RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
   For n1 = 1 To 86
      Lunghetta(1) = n1
      Call AvanzamentoElab(1,86,n1)
      If ScriptInterrotto Then Exit For
      Ritardo1 = RitardoEstratti(n1)
      If Ritardo1 > RitardoMinimo Then
         For n2 = n1 + 1 To 87
            Lunghetta(2) = n2
            If ScriptInterrotto Then Exit For
            Ritardo2 = Ritardo1
            If Ritardo2 > RitardoEstratti(n2) Then
               Ritardo2 = RitardoEstratti(n2)
            End If
            If Ritardo2 > RitardoMinimo Then
               For n3 = n2 + 1 To 88
                  Lunghetta(3) = n3
                  If ScriptInterrotto Then Exit For
                  Ritardo3 = Ritardo2
                  If Ritardo3 > RitardoEstratti(n3) Then
                     Ritardo3 = RitardoEstratti(n3)
                  End If
                  If Ritardo3 > RitardoMinimo Then
                     For n4 = n3 + 1 To 89
                        Lunghetta(4) = n4
                        If ScriptInterrotto Then Exit For
                        Ritardo4 = Ritardo3
                        If Ritardo4 > RitardoEstratti(n4) Then
                           Ritardo4 = RitardoEstratti(n4)
                        End If
                        If Ritardo4 > RitardoMinimo Then
                           For n5 = n4 + 1 To 90
                              Lunghetta(5) = n5
                              If ScriptInterrotto Then Exit For
                              Ritardo5 = Ritardo4
                              If Ritardo5 > RitardoEstratti(n5) Then
                                 Ritardo5 = RitardoEstratti(n5)
                              End If
                              If Ritardo5 > RitardoMinimo Then
                                 For k = 1 To QuantitaLunghette
                                    If Ritardo5 > Lunghette(k).ritardo Then
                                       For q = QuantitaLunghette To k + 1 Step - 1
                                          Lunghette(q).sNumeri = Lunghette(q - 1).sNumeri
                                          Lunghette(q).Ritardo = Lunghette(q - 1).Ritardo
                                       Next
                                       Lunghette(k).sNumeri = StringaNumeri(Lunghetta)
                                       Lunghette(k).Ritardo = Ritardo5
                                       RitardoMinimo = Lunghette(QuantitaLunghette).ritardo
                                       Exit For
                                    End If
                                 Next
                              End If
                           Next
                        End If
                     Next
                  End If
               Next
            End If
         Next
      End If
   Next
   For y = 1 To QuantitaLunghette
      Call Scrivi("Formazione : " & Lunghette(y).sNumeri & " " & "Ritardo : " & Lunghette(y).ritardo & " Sorte estratto " & "Ruote di rilevamento : " & StringaRuote(aRuoteSel))
   Next

End Sub
Sub ImpostaParametri(Lunghette,QuantitaLunghette,aRuoteSel,aRuote,aPosizioni)
   Dim i,k
   Call ScegliRuote(aRuoteSel,aRuote)
   QuantitaLunghette = InputBox("Scelta quantià","Scegli la quantità delle Lunghette da rilevare (massimo 100)",50)
   ReDim Lunghette(QuantitaLunghette)
   For i = 1 To QuantitaLunghette
      Set Lunghette(i) = New clsLunghetta
   Next
   ReDim aPosizioni(5)
   For k = 1 To 5
      aPosizioni(k) = True
   Next
End Sub
Sub CalcolaRitardiEstratti(RitardoEstratti,aRuote,aPosizioni)
   Dim IdEstr
   Dim Flag
   Dim Estrazione
   Dim r,e,n
   Dim EstrattoSingolo
   For IdEstr = 1 To EstrazioneFin
      If GetEstrazioneCompleta(IdEstr,Estrazione) Then
         Flag = True
         For r = 1 To 10
            If aRuote(r) Then
               If Estrazione(r,1) = 0 Then
                  Flag = False
               Else
                  For e = 1 To 5
                     If aPosizioni(e) Then
                        EstrattoSingolo = Estrazione(r,e)
                        RitardoEstratti(EstrattoSingolo) = - 1
                     End If
                  Next
               End If
            End If
         Next
         If Flag Then
            For n = 1 To 90
               RitardoEstratti(n) = RitardoEstratti(n) + 1
            Next
         End If
      End If
   Next
End Sub

Testatelo
Edoardo_95 Grazie per il tuo magnifico script e per la tua spiegazione sulla programmazione . Ma la soluzione a mio modesto parere dovrebbe essere molto più semplice .

ti spiego il mio pensiero : consideriamo i primi 8 numeri sul tabellone analitico

sviluppiamo questi 8 numeri in classe 5

quindi avremmo 8*7*6*5*4*3*2*1/5*4*3*2*1*3*2*1=56

quindi abbiamo 56 combinazioni in classe 5

sviluppiamo queste 56 combinazioni con i primi 8 numeri del tabellone analitico

e cerchiamo i riatrdi di queste 56 combinazioni di numeri in classe 5 .

Dal tuo ottimo script

BA 1.png



Formazione : 6.23.25.35.78 Ritardo : 52 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.25.35 Ritardo : 50 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.25.78 Ritardo : 50 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.35.78 Ritardo : 50 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.35.78 Ritardo : 50 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.35.78 Ritardo : 50 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.25.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.35.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.35.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.25.35.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.25.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.25.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.35.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.25.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 23.25.35.78.84 Ritardo : 45 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.25.68 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.35.68 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.23.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.35.68 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.25.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.17.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.25.35.68 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.25.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.25.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.23.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.25.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.25.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.25.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 6.35.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.35.68 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.25.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.23.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.25.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.25.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.25.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 17.35.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 23.25.35.68.78 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 23.25.35.68.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 23.25.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 23.35.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : BA
Formazione : 25.35.68.78.84 Ritardo : 44 Sorte estratto Ruote di rilevamento : Ba

Credo di avere anche una soluzione per gli ambi .

Ciao Eugenio
 

i legend

Premium Member
Ciao Edo
Provato lo script
E' una super scheggia scheggia SCHEGGIA
se imposti il titolo e poi i risultati in colonna
lo script si velocizza ulteriormente
suggerimento per le classi che magari impiegano di piu , in questo caso non serve.
Sorte|Ru|Formazione| Rit( titolo)
E|BA.ecc|cinquina|rit
ecc...
per ambo immagino sia altrettanto veloce. :)

ciao e ancora Complimenti :)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 18 maggio 2024
    Bari
    77
    62
    67
    60
    04
    Cagliari
    89
    01
    35
    54
    38
    Firenze
    84
    58
    25
    64
    57
    Genova
    53
    25
    66
    59
    23
    Milano
    22
    75
    48
    16
    77
    Napoli
    81
    41
    42
    67
    39
    Palermo
    19
    63
    57
    43
    05
    Roma
    04
    35
    50
    33
    23
    Torino
    56
    20
    46
    14
    88
    Venezia
    78
    81
    42
    74
    36
    Nazionale
    42
    83
    59
    86
    34
    Estrazione Simbolotto
    Milano
    41
    29
    01
    27
    30
Alto