Заменить каждую серию массива нулем - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д