Eliminare più elementi da un array: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
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()
  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>
  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
    Print b
    Print b
  Next
  Next
 
 
  '''End'''
  End
   
   
   
   
  '''Private''' Function EliminaDispari(lista As Byte[])  <FONT Color=gray>' ''Riceve il parametro per Indirizzo''</font>
  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
  While x < lista.Count
    If lista[x] Mod 2 > 0 Then
    If lista[x] Mod 2 > 0 Then
      lista.Remove(x)
      lista.Remove(x)
      Continue
      Continue
    Endif
    Endif
    Inc x
    Inc x
  Wend
  Wend
 
 
  '''End'''
  End
 
In esempio invece, in cui si desidera eliminare gli elementi con valore zero, si adotterà un'altra modalità:
 
  Public Sub Main()
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 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]
  bb = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 9, 0]
 
 
  While i < bb.Count
  While i < bb.Count
    If bb[i] == 0 Then
    If bb[i] == 0 Then
      bb.Remove(bb.Find(0), 1)
      bb.Remove(bb.Find(0), 1)
      i = 0
      i = 0
    Endif
    Endif
    Inc i
    Inc i
  Wend
  Wend
 
 
  For Each b In bb
  For Each b In bb
    Print b
    Print b
  Next
  Next
 
 
  '''End'''
  End

Versione delle 04: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