Novità

SpazioScript (per LuigiB o per chi può aiutarmi)

Giggio

Super Member >PLATINUM<
direi di no ...
avevamo

Puntatore (1) = 1
aPuntatore (2) = 8
aPuntatore (3) = 8

il 3 non lo posso incrementare salgo al 2
il 2 non lo posso incrementare salgo all '1
l '1 si puo incrementare lo faccio e aggiorno i registri successivi allo setsso valore...

perciò ?
 

Giggio

Super Member >PLATINUM<
benissimo ultime 2 prove ma è importante che tu capisca..

Puntatore (1) = 2
aPuntatore (2) = 8
aPuntatore (3) = 8

prossima ?
 

Giggio

Super Member >PLATINUM<
bene bene , arriviamo a un punto che sarà

Puntatore (1) = 8
aPuntatore (2) = 8
aPuntatore (3) = 8

dato che vogliamo replicare la funzione di spaziometria che torna true finche ci sono colonne a questo punto
io ti dico dammi la successiva , tu a voce che mi risponderesti ?
 

Giggio

Super Member >PLATINUM<
quindi la funzione tornerebbe false. e il chiamante non la chiamerebbe piu perche sa che le colonne sono finite.
Giusto !

ora questo ragionamento lo dobbiamo implementare con il codice.

la prima cosa è dichiarare una variabile globale nella classe che sarà il nostro array aPuntatore e che verra dimensionato con la classe impostata attraverso una routine privata della classe che chiameremo come sotto.

In questa routine
- Dimensioniamo aPuntatore in funzione della classe.
-Prevalorizziamo tutti i valori del puntatore ad 1 tranne l'ultimo che lasciamo a 0

questa routine la lancieremo dopo quella che alimenta la griglia e quindi sempre dentro alla condizione che le colonne integrali siano >0

Vai implementa questa routine e dichiara la variabile aPuntatore

Codice:
 Private Sub InitArrayPuntatore
  
   End Sub
 

Edoardo_95

Advanced Member
Codice:
Option Explicit
Class clsSviluppo
   Private aBNumDaSvil ' array boolean contenente i numeri da sviluppare
   Private nQNumeri ' quantita dei numeri da sviluppare
   Private nCombInt ' combinazioni integrali
   Private nClasse ' classe di sviluppo
   Private aRighe
   Private nQNumPerRiga
   Private aPuntatore
   Function InitSviluppo(aNumeri,Classe)
      nQNumeri = AlimentArrayNumDaSvil(aNumeri) 'quantità dei numeri da sviluppare ottenuto mediante un ciclo for degli elementi impostati a true di un array convertito boolean
      nCombInt = Combinazioni(nQNumeri,Classe) 'combinazioni integrali ottenuti mediante la function combinazioni sarà il valore restituito da InitSviluppo
      nClasse = Classe 'classe di sviluppo
      InitSviluppo = nCombInt
      If nCombInt > 0 Then
         Call AlimentaArrayRighe
         Call InitArrayPuntatore
      End If
   End Function
   Private Function AlimentArrayNumDaSvil(aNumeri)
      Dim k,Q
      aBNumDaSvil = ArrayNumeriToBool(aNumeri) 'conversione array numerico in arrey boolean
      Q = 0
      For k = 1 To UBound(aBNumDaSvil) 'Ciclo  gli elementi dell'array per contare i valori true (cioè i numeri selezionati)
         If aBNumDaSvil(k) = True Then '  se l'elemento è True vuol dire che il numero è stato usato
            Q = Q + 1 ' percio incremento la variabile Q che conteggia la quantita dei numeri usati
         End If
      Next
      AlimentArrayNumDaSvil = Q ' restituisco la quantità dei numeri
   End Function
   Function GetStringaNumDaSvil ' function che restituisce una stringa dei numeri del chiamante
      Dim s,k
      s = ""
      For k = 1 To UBound(aBNumDaSvil) ' ciclo l'aarray boolean dei numeri usati
         If aBNumDaSvil(k) = True Then '  se l'elemento è true vuol dire che il numero K è tra quelli usati
            s = s & k & "." ' effettuo una concatenazione degli elementi "k" impostati a true e quindi utilizzati
         End If
      Next
      GetStringaNumDaSvil = RimuoviLastChr(s,".") ' rimuovo l'ultimo punto che per forza di cose compare nella stringa costruita nel ciclo
   End Function
   Function GetQuantitaNumeriDaSvil ' function che ritorna la quantità dei numeri da sviluppare
      GetQuantitaNumeriDaSvil = nQNumeri
   End Function
   Private Sub AlimentaArrayRighe
      Dim aNumeri,k,y,j' contiene i numeri del pronostico convertiti dall'array boolean
      Call ArrayBNumToArrayNum(aBNumDaSvil,aNumeri) ' popolo aNumeri
      nQNumPerRiga =((nQNumeri - nClasse) + 1) 'che formula uso  per calcolare la quantita di numeri per singola riga della griglia
      ReDim aRighe(nClasse,nQNumPerRiga) ' dimensiono la griglia in modo opportuno
      For k = 1 To nClasse 'scorro le righe
         j = 0
         For y = k To(k - 1) + nQNumPerRiga 'per ogni riga alimento le colonne,prendo i numeri (aNumeri) a partire dalla variabile di controllo del ciclo esterno (k)
            j = j + 1
            aRighe(k,j) = aNumeri(y)
         Next
      Next
   End Sub
   Sub OutputARighe
      Dim k,j,s
      For k = 1 To nClasse
         s = ""
         For j = 1 To nQNumPerRiga
            s = s & Format2(aRighe(k,j)) & "."
         Next
         Call Scrivi(Format2(k) & ") " & RimuoviLastChr(s,"."))
      Next
   End Sub
   Private Sub InitArrayPuntatore
   ReDim aPutatore(nClasse)
  
 
  
   End Sub
End Class
Sub Main
   Dim cSvil
   Set cSvil = New clsSviluppo ' inizializzo la classe
   Dim aNumDaSvil,nClasse,nCombInt,nQNumeri
   nQNumeri = ScegliNumeri(aNumDaSvil) ' scelta dinamica dei numeri da sviluppare
   nClasse = ScegliEsito(2,2,90) ' classe di sviluppo
   nCombInt = cSvil.InitSviluppo(aNumDaSvil,nClasse) ' inizializzo lo sviluppo
   If nCombInt > 0 Then
      Call Scrivi(" " & cSvil.GetStringaNumDaSvil)
      Call Scrivi
      Call Scrivi(" Quantità numeri        :" & " " & cSvil.GetQuantitaNumeriDaSvil)
      Call Scrivi(" Classe                 :" & " " & nClasse)
      Call Scrivi(" Combinazioni integrali :" & " " & nCombInt)
      Call Scrivi
      Call cSvil.OutputARighe
   Else
      MsgBox "Impossibile sviluppare",vbCritical
   End If
End Sub
 

Giggio

Super Member >PLATINUM<
bhe ? te la cavi cosi ? non manca qualcosa ?

In questa routine
- Dimensioniamo aPuntatore in funzione della classe.
-Prevalorizziamo tutti i valori del puntatore ad 1 tranne l'ultimo che lasciamo a 0


Codice:
Private Sub InitArrayPuntatore
   ReDim aPutatore(nClasse)
  
 
  
   End Sub
 

Edoardo_95

Advanced Member
Mmmm... cosi?

Codice:
   Private Sub InitArrayPuntatore
      Dim k
      ReDim aPuntatore(nClasse)
      For k = 1 To nClasse - 1
         aPuntatore(k) = 1
      Next
   End Sub
 

Edoardo_95

Advanced Member
Codice:
Private Sub InitArrayPuntatore

      Dim k,j

      ReDim aPuntatore(nClasse)

      For k = 1 To nClasse - 1

         aPuntatore(k) = 1

      Next  

      For j = ubound(nClasse) To ubound(nClasse)

         aPuntatore(j) = 0
       Next
   End Sub
 

Giggio

Super Member >PLATINUM<
scusa eh non è che non va bene ma ache serve il ciclo ?
leva il ciclo ... tra l'altro ubound(nClasse) non va bene perche nClasse non è un 'array ...
non complicarti la vita ...
 

Edoardo_95

Advanced Member
Ahahaha

Codice:
Private Sub InitArrayPuntatore

      Dim k,j

      ReDim aPuntatore(nClasse)

      For k = 1 To nClasse - 1

       aPuntatore(k) = 1

      Next 

      J = ubound(nClasse)

      aPuntatore(j) = 0

   End Sub
 

Edoardo_95

Advanced Member
Codice:
Private Sub InitArrayPuntatore



      Dim k



      ReDim aPuntatore(nClasse)

      For k = 1 To nClasse - 1

       aPuntatore(k) = 1

      Next

      aPuntatore(nClasse) = 0

   End Sub
 

Giggio

Super Member >PLATINUM<
vedi che devi avere padronanza delle istruzioni se vuoi fare gli script sapendo cio che fai ...

ok , ora dobbiamo creare la funzione che consente al chiamante di richiedere una colonna dello sviluppo, ogni volta che la richiede otterra la colonna successiva .Questa funzione si chiamerà GetColonna e avra un parametro che è un array chiamto aColonna , che viene dimensionato pari alla classe dal chiamate stesso quindi a lei gli arriva un 'array gia dimensionato , se la classe era 3 arriva un 'array da 3 elementi.

ok cra questa funzione e richiamala dallo script, cioè non è che devi scrivere il codice , scrivi il prototipo della funzione con i lsuo parametro , dimensiona l'array aColonna nella sub main e chiama la funzione get colonna tramite un ciclo Do come si fa con la funzione di spaziometria.
Per ora non farà niente ... non ti preoccupare.
 

Edoardo_95

Advanced Member
Codice:
Option Explicit
Class clsSviluppo
   Private aBNumDaSvil ' array boolean contenente i numeri da sviluppare
   Private nQNumeri ' quantita dei numeri da sviluppare
   Private nCombInt ' combinazioni integrali
   Private nClasse ' classe di sviluppo
   Private aRighe
   Private nQNumPerRiga
   Private aPuntatore
   Function InitSviluppo(aNumeri,Classe)
      nQNumeri = AlimentArrayNumDaSvil(aNumeri) 'quantità dei numeri da sviluppare ottenuto mediante un ciclo for degli elementi impostati a true di un array convertito boolean
      nCombInt = Combinazioni(nQNumeri,Classe) 'combinazioni integrali ottenuti mediante la function combinazioni sarà il valore restituito da InitSviluppo
      nClasse = Classe 'classe di sviluppo
      InitSviluppo = nCombInt
      If nCombInt > 0 Then
         Call AlimentaArrayRighe
         Call InitArrayPuntatore
      End If
   End Function
   Private Function AlimentArrayNumDaSvil(aNumeri)
      Dim k,Q
      aBNumDaSvil = ArrayNumeriToBool(aNumeri) 'conversione array numerico in arrey boolean
      Q = 0
      For k = 1 To UBound(aBNumDaSvil) 'Ciclo  gli elementi dell'array per contare i valori true (cioè i numeri selezionati)
         If aBNumDaSvil(k) = True Then '  se l'elemento è True vuol dire che il numero è stato usato
            Q = Q + 1 ' percio incremento la variabile Q che conteggia la quantita dei numeri usati
         End If
      Next
      AlimentArrayNumDaSvil = Q ' restituisco la quantità dei numeri
   End Function
   Function GetStringaNumDaSvil ' function che restituisce una stringa dei numeri del chiamante
      Dim s,k
      s = ""
      For k = 1 To UBound(aBNumDaSvil) ' ciclo l'aarray boolean dei numeri usati
         If aBNumDaSvil(k) = True Then '  se l'elemento è true vuol dire che il numero K è tra quelli usati
            s = s & k & "." ' effettuo una concatenazione degli elementi "k" impostati a true e quindi utilizzati
         End If
      Next
      GetStringaNumDaSvil = RimuoviLastChr(s,".") ' rimuovo l'ultimo punto che per forza di cose compare nella stringa costruita nel ciclo
   End Function
   Function GetQuantitaNumeriDaSvil ' function che ritorna la quantità dei numeri da sviluppare
      GetQuantitaNumeriDaSvil = nQNumeri
   End Function
   Private Sub AlimentaArrayRighe
      Dim aNumeri,k,y,j' contiene i numeri del pronostico convertiti dall'array boolean
      Call ArrayBNumToArrayNum(aBNumDaSvil,aNumeri) ' popolo aNumeri
      nQNumPerRiga =((nQNumeri - nClasse) + 1) 'che formula uso  per calcolare la quantita di numeri per singola riga della griglia
      ReDim aRighe(nClasse,nQNumPerRiga) ' dimensiono la griglia in modo opportuno
      For k = 1 To nClasse 'scorro le righe
         j = 0
         For y = k To(k - 1) + nQNumPerRiga 'per ogni riga alimento le colonne,prendo i numeri (aNumeri) a partire dalla variabile di controllo del ciclo esterno (k)
            j = j + 1
            aRighe(k,j) = aNumeri(y)
         Next
      Next
   End Sub
   Sub OutputARighe
      Dim k,j,s
      For k = 1 To nClasse
         s = ""
         For j = 1 To nQNumPerRiga
            s = s & Format2(aRighe(k,j)) & "."
         Next
         Call Scrivi(Format2(k) & ") " & RimuoviLastChr(s,"."))
      Next
   End Sub
   Private Sub InitArrayPuntatore
   Dim k
   ReDim aPutatore(nClasse)
   For k = 1 to nClasse - 1
   aPuntatore(k)=1
   Next
   aPuntatore(nClasse)=0
   End Sub
   Function GetColonna(aColonna)
   End Function
End Class
Sub Main
   Dim cSvil
   Set cSvil = New clsSviluppo ' inizializzo la classe
   Dim aNumDaSvil,nClasse,nCombInt,nQNumeri
   Dim aColonna
   nQNumeri = ScegliNumeri(aNumDaSvil) ' scelta dinamica dei numeri da sviluppare
   nClasse = ScegliEsito(2,2,90) ' classe di sviluppo
   nCombInt = cSvil.InitSviluppo(aNumDaSvil,nClasse) ' inizializzo lo sviluppo
   If nCombInt > 0 Then
   Do While cSvil.GetColonna(aColonna)
   Loop
      Call Scrivi(" " & cSvil.GetStringaNumDaSvil)
      Call Scrivi
      Call Scrivi(" Quantità numeri        :" & " " & cSvil.GetQuantitaNumeriDaSvil)
      Call Scrivi(" Classe                 :" & " " & nClasse)
      Call Scrivi(" Combinazioni integrali :" & " " & nCombInt)
      Call Scrivi
      Call cSvil.OutputARighe
   Else
      MsgBox "Impossibile sviluppare",vbCritical
   End If
End Sub
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 04 maggio 2024
    Bari
    02
    31
    81
    52
    21
    Cagliari
    39
    88
    84
    01
    67
    Firenze
    36
    30
    70
    06
    41
    Genova
    59
    23
    61
    22
    27
    Milano
    05
    17
    69
    57
    39
    Napoli
    81
    62
    82
    43
    50
    Palermo
    73
    55
    62
    45
    18
    Roma
    76
    70
    01
    64
    15
    Torino
    82
    55
    35
    70
    46
    Venezia
    58
    23
    61
    29
    21
    Nazionale
    10
    14
    01
    43
    09
    Estrazione Simbolotto
    Milano
    30
    01
    05
    32
    11

Ultimi Messaggi

Alto