Заменить каждую серию массива нулем - VB

Узнай цену своей работы

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

Уважаемые, помогите пожалуйста с задачей. Дано целое число L(>0) и целочисленный массив размера N. Заменить каждую серию( назовем серией группу подряд идущих одинаковых элементов, а длиной серии - количество этих элементов (длина серии может быть равна 1)) массива, длина которой равна L, на один элемент с нулевым значением. Эта задача есть в Паскале, но к сожалению я вообще не пойму как ее сделать(

Решение задачи: «Заменить каждую серию массива нулем»

textual
Листинг программы
Function Task(A() As Integer, L As Integer) As Integer()
Dim R() As Integer
    n% = UBound(A, 1)
    ReDim R(1 To n%) As Integer
    prev% = A(1)
    c% = 1
    o% = 0
    For i% = 2 To n%
        curr% = A(i%)
        If curr% = prev% Then
           c% = c% + 1
        Else
           If c% = L% Then '::: серия нужной длины
              o% = o% + 1
              R(o%) = 0
           Else
              For j% = 1 To c%
                  o% = o% + 1
                  R(o%) = prev%
              Next j%
           End If
           c% = 1
        End If
        
        prev% = curr%
        
    Next i%
 
    If c% = L% Then '::: серия нужной длины
       o% = o% + 1
       R(o%) = 0
    Else
       For j% = 1 To c%
           o% = o% + 1
           R(o%) = prev%
       Next j%
    End If
    ReDim Preserve R(1 To o%) As Integer
    Task = R
End Function
 
Sub Test()
Dim X(1 To 10) As Integer
Dim R()        As Integer
    X(1) = 1
    X(2) = 1
    X(3) = 3
    X(4) = 4
    X(5) = 5
    X(6) = 5
    X(7) = -7
    X(8) = 8
    X(9) = 9
    X(10) = 10
    R = Task(X, 1)
    For i% = 1 To UBound(R, 1)
        Debug.Print R(i%)
    Next i%
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы