Differenze tra le versioni di "Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso in questione è qello in cui: * si ha una ''Struttura'', i cui membri sono dei vettori; * ogni elemento di un membro vettoriale è in stretta rapporto con l'elemento d...") |
|||
Riga 11: | Riga 11: | ||
− | + | Public Sub Main() | |
Dim ri, nuova As New RISULTATI | Dim ri, nuova As New RISULTATI | ||
Riga 19: | Riga 19: | ||
<FONT Color=gray>' ''Imposta i valori iniziali per entrambi gli array:''</font> | <FONT Color=gray>' ''Imposta i valori iniziali per entrambi gli array:''</font> | ||
− | + | nomi = ["Aaaa", "Bbbb", "Cccc", "Dddd"] | |
− | + | punteggi = [15, 32, 18, 50] | |
− | + | For b = 0 To nomi.Max | |
− | + | ri.nome[b] = nomi[b] | |
− | + | ri.punt[b] = punteggi[b] | |
− | + | Next | |
<FONT Color=gray>' ''Passa il valore del membro oggetto dell'ordinamento ad un vettore di tipo omogeneo, che fa così da appoggio:''</font> | <FONT Color=gray>' ''Passa il valore del membro oggetto dell'ordinamento ad un vettore di tipo omogeneo, che fa così da appoggio:''</font> | ||
− | + | With bb = New Byte[] | |
− | + | For b = 0 To ri.nome.Max | |
− | + | .Push(ri.punt[b]) | |
− | + | Next | |
− | + | .Sort(gb.Descent) | |
− | + | End With | |
− | <FONT Color=gray>' ''Genera un nuovo vettore di tipo della Struttura "RISULTATI" contenente nei propri elementi | + | <FONT Color=gray>' ''Genera un nuovo vettore di tipo della Struttura "RISULTATI" contenente nei propri elementi le variabili del tipo Struttura "RISULTATI", "ordinati" in base al membro ".punt":''</font> |
− | + | For b = 0 To bb.Max | |
− | + | For c = 0 To bb.Max | |
− | + | If bb[b] = ri.punt[c] Then | |
− | + | With nuova | |
− | + | .nome[b] = ri.nome[c] | |
− | + | .punt[b] = ri.punt[c] | |
− | + | End With | |
− | + | Endif | |
− | + | Next | |
− | + | Next | |
− | |||
<FONT Color=gray>' ''Verifica finale:''</font> | <FONT Color=gray>' ''Verifica finale:''</font> | ||
− | + | For b = 0 To nuova.nome.Max | |
− | + | Print nuova.punt[b], nuova.nome[b] | |
− | + | Next | |
− | + | End |
Versione attuale delle 04:19, 8 giu 2024
Il caso in questione è qello in cui:
- si ha una Struttura, i cui membri sono dei vettori;
- ogni elemento di un membro vettoriale è in stretta rapporto con l'elemento di un altro membro;
- si intende ordinare gli elementi di ciascun membro, conservando ovviamente quello stretto legame.
Mostriamo un esempio pratico, nel quale, avendo una Struttura composta da due membri di tipo array in cui l'elemento dell'uno è correlato ad un elemento dell'altro membro, si intende ordinare gli elementi ovviamnete di entrambi i membri sulla base del membro vettoriale di tipo Byte:
Public Struct RISULTATI nome[4] As String punt[4] As Byte End Struct Public Sub Main() Dim ri, nuova As New RISULTATI Dim nomi As String[] Dim punteggi, bb As Byte[] Dim b, c As Byte ' Imposta i valori iniziali per entrambi gli array: nomi = ["Aaaa", "Bbbb", "Cccc", "Dddd"] punteggi = [15, 32, 18, 50] For b = 0 To nomi.Max ri.nome[b] = nomi[b] ri.punt[b] = punteggi[b] Next ' Passa il valore del membro oggetto dell'ordinamento ad un vettore di tipo omogeneo, che fa così da appoggio: With bb = New Byte[] For b = 0 To ri.nome.Max .Push(ri.punt[b]) Next .Sort(gb.Descent) End With ' Genera un nuovo vettore di tipo della Struttura "RISULTATI" contenente nei propri elementi le variabili del tipo Struttura "RISULTATI", "ordinati" in base al membro ".punt": For b = 0 To bb.Max For c = 0 To bb.Max If bb[b] = ri.punt[c] Then With nuova .nome[b] = ri.nome[c] .punt[b] = ri.punt[c] End With Endif Next Next ' Verifica finale: For b = 0 To nuova.nome.Max Print nuova.punt[b], nuova.nome[b] Next End