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