Edoardo_95
Advanced Member
Quindi sarà cosi
aPuntatore (1) = 1
aPuntatore (2) = 3
aPuntatore (3) = 3
aPuntatore (1) = 1
aPuntatore (2) = 3
aPuntatore (3) = 3
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Private Sub InitArrayPuntatore
End Sub
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
Private Sub InitArrayPuntatore
ReDim aPutatore(nClasse)
End Sub
Private Sub InitArrayPuntatore
Dim k
ReDim aPuntatore(nClasse)
For k = 1 To nClasse - 1
aPuntatore(k) = 1
Next
End Sub
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
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
Private Sub InitArrayPuntatore
Dim k
ReDim aPuntatore(nClasse)
For k = 1 To nClasse - 1
aPuntatore(k) = 1
Next
aPuntatore(nClasse) = 0
End Sub
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