Differenze tra le versioni di "Eliminare più elementi da un array"
Da Gambas-it.org - Wikipedia.
Riga 3: | Riga 3: | ||
Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari: | Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari: | ||
− | + | Public Sub Main() | |
Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] | Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] | ||
Dim b As Byte | Dim b As Byte | ||
− | + | EliminaDispari(numeri) <FONT Color=gray>' ''Essendo un array, il passaggio dell'argomento può avvenire per Indirizzo''</font> | |
− | + | For Each b In numeri | |
− | + | Print b | |
− | + | Next | |
− | + | ||
− | + | End | |
− | + | Private Function EliminaDispari(lista As Byte[]) <FONT Color=gray>' ''Riceve il parametro per Indirizzo''</font> | |
Dim x As Byte | Dim x As Byte | ||
− | + | While x < lista.Count | |
− | + | If lista[x] Mod 2 > 0 Then | |
− | + | lista.Remove(x) | |
− | + | Continue | |
− | + | Endif | |
− | + | Inc x | |
− | + | Wend | |
− | + | ||
− | + | End | |
− | + | In esempio invece, in cui si desidera eliminare gli elementi con valore zero, si adotterà un'altra modalità: | |
− | + | Public Sub Main() | |
− | In | ||
− | |||
Dim bb As Byte[] | Dim bb As Byte[] | ||
Riga 39: | Riga 37: | ||
Dim i As Integer | Dim i As Integer | ||
− | + | bb = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 9, 0] | |
− | + | ||
− | + | While i < bb.Count | |
− | + | If bb[i] == 0 Then | |
− | + | bb.Remove(bb.Find(0), 1) | |
− | + | i = 0 | |
− | + | Endif | |
− | + | Inc i | |
− | + | Wend | |
− | + | ||
− | + | For Each b In bb | |
− | + | Print b | |
− | + | Next | |
− | + | ||
− | + | End |
Versione delle 03:14, 10 giu 2024
Per eliminare più elementi da un vettore, ad esempio sulla base dei valori in ciascuno di essi contenuti, si utilizzarà un ciclo con il Metodo ".Remove( )" dell'oggetto vettore, avendo cura nel codice della ovvia riduzione della quantità corrente degli elementi nell'array, al fine di non incorrere in un errore di "Out of Bounds".
Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari:
Public Sub Main() Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] Dim b As Byte EliminaDispari(numeri) ' Essendo un array, il passaggio dell'argomento può avvenire per Indirizzo For Each b In numeri Print b Next End Private Function EliminaDispari(lista As Byte[]) ' Riceve il parametro per Indirizzo Dim x As Byte While x < lista.Count If lista[x] Mod 2 > 0 Then lista.Remove(x) Continue Endif Inc x Wend End
In esempio invece, in cui si desidera eliminare gli elementi con valore zero, si adotterà un'altra modalità:
Public Sub Main() Dim bb As Byte[] Dim b As Byte Dim i As Integer bb = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 9, 0] While i < bb.Count If bb[i] == 0 Then bb.Remove(bb.Find(0), 1) i = 0 Endif Inc i Wend For Each b In bb Print b Next End