Differenze tra le versioni di "Eliminare più elementi da un array"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 8: Riga 8:
 
   Dim b As Byte
 
   Dim b As Byte
 
    
 
    
   EliminaDispari(numeri)  <FONT Color=gray>' ''Passaggio dell'argomento per Indirizzo''</font>
+
   EliminaDispari(numeri)  <FONT Color=gray>' ''Essendo un array, il passaggio dell'argomento può avvenire per Indirizzo''</font>
 
    
 
    
 
   For Each b In numeri
 
   For Each b In numeri
Riga 28: Riga 28:
 
     Inc x
 
     Inc x
 
   Wend
 
   Wend
 +
 
 +
'''End'''
 +
 +
 +
In questo esempio, 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'''
 
  '''End'''

Versione attuale delle 03:06, 20 mar 2018

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 questo esempio, 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