Сжать массив, выбросив нулевые элементы - VB

Формулировка задачи:

Задан массив, содержащий нулевые элементы. Сжать его , ыбросив эти элементы, порядок следования элементов не нарушать.

Код к задаче: «Сжать массив, выбросив нулевые элементы - VB»

textual
Sub PressArr(X() As Integer)
      n% = UBound(X, 1)
      i_from% = 1
      i_to% = 1
      Do
          If i_from% > n% Then Exit Do
          If X(i_from%) = 0 Then
             i_from% = i_from% + 1
          Else
             X(i_to%) = X(i_from%)
             i_from% = i_from% + 1
             i_to% = i_to + 1
          End If
      Loop
      ReDim Preserve X(1 To i_to% - 1) As Integer
End Sub
 
Sub Test()
 
Dim Z() As Integer
 
    ReDim Z(1 To 10) As Integer
   
    Z(1) = 0
    Z(2) = 1
    Z(3) = 0
    Z(4) = 4
    Z(5) = 5
    Z(6) = 0
    Z(7) = -1
    Z(8) = 0
    Z(9) = 44
    Z(10) = 34
   
    PressArr Z
 
    For i% = 1 To UBound(Z, 1)
        Debug.Print Z(i%)
    Next i%
End Sub

13   голосов, оценка 3.615 из 5


СОХРАНИТЬ ССЫЛКУ