Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro
Da Gambas-it.org - Wikipedia.
Versione del 27 feb 2018 alle 03:02 di Vuott (Discussione | contributi) (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...")
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