Вставить перед каждой серией массива элемент с нулевым значением - VB
Формулировка задачи:
Дан целочисленный массив размера N. Вставить перед каждой его серией элемент с нулевым значением. Назовем
серией
группу подряд идущих одинаковых элементов, адлинной серии
- количество этих элементов(длинна серии может быть равна 1).Решение задачи: «Вставить перед каждой серией массива элемент с нулевым значением»
textual
Листинг программы
Option Explicit Private Sub Command1_Click() Dim Arr&(): Arr&() = GenerateArraySeries() PrintArray Arr&() 'создаем максимально необходимую буфер-зону и смещаем все эл-ты вправо Dim UB&: UB = UBound(Arr&()) Dim diff&: diff = (UB + 1) \ 2 Dim MaxLen&: MaxLen = UB + diff ReDim Preserve Arr&(MaxLen) Dim i& For i = UB To 0 Step -1 Arr(i + diff) = Arr(i) 'Arr(i) = 0 Next 'PrintArray Arr&() Dim flag As Boolean: flag = False Dim p&: p = 0 For i = diff To MaxLen - 1 If Arr(i) = Arr(i + 1) Then If Not flag Then Arr(p) = 0 p = p + 1 flag = True End If Else flag = False End If Arr(p) = Arr(i) p = p + 1 Next Arr(p) = Arr(MaxLen) ReDim Preserve Arr&(p) PrintArray Arr&() End Sub Private Function GenerateArraySeries() Dim num&, i&, s&, n& Dim Arr&(): ReDim Arr&(19) Randomize For i = 1 To 10 num = Int(Rnd * 10) 'генерируем серии For s = 1 To Int(Rnd * 2) + 1 Arr(n) = num n = n + 1 Next s Next i ReDim Preserve Arr&(n - 1) GenerateArraySeries = Arr&() End Function Private Sub PrintArray(Arr&()) Dim el For Each el In Arr&() Me.Print el; " "; Next Me.Print vbLf End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д