Ошибка при передачи элемента одного массива, другому
При передачи из одного массива элемент приравнивается к нулю, хотя должен равняться другому числу
Sub CH()
Dim s As Integer, m = New Integer() {14, 6, 3, 0, 7, 12, -3, 1, 5, 2, -10}, k(1) As Integer, f As Integer, t As Integer
f = 0
For i = 0 To 10
If (m(i) Mod 3) = 0 Then
s += m(i)
k(f) = m(i)
ReDim Preserve k(UBound(k) + 1)
If k(f) > k(f + 1) Then
k(f) = t
k(f + 1) = k(f)
k(f + 1) = t
End If
Vivod(k(f), ListBox1)
f += 1
End If
Next i
Vivod1(s, TextBox1)
End Sub
После комментария ниже, я изменил код и теперь выдает вот такой результат
Sub CH()
Dim s As Integer, m = New Integer() {14, 6, 3, 0, 7, 12, -3, 1, 5, 2, -10}, k(0) As Integer, f As Integer, t As Integer
f = 0
For i = 0 To 10
If (m(i) Mod 3) = 0 Then
s *= m(i)
k(f) = m(i)
ReDim Preserve k(UBound(k) + 1)
f += 1
End If
Next i
Vivod1(s, TextBox1)
For d = 0 To f - 1
For i = 1 To f - 1 - d
If k(i) > k(i + 1) Then
t = k(i + 1)
k(i + 1) = k(i)
k(i) = t
End If
Next
Next
End Sub
Ответы (1 шт):
Автор решения: JohnSUN
→ Ссылка
Рабочая часть кода может быть похожа на это:
f = -1
s = 1 ' Важно! В противном случае результат для любого набора данных будет 0
For i = LBound(m) To UBound(m)
If (m(i) Mod 3) = 0 Then
s = s * m(i)
f = f + 1
ReDim Preserve k(f)
k(f) = m(i)
End If
Next i
For d = 0 To f - 1
For i = d + 1 To f
If k(d) > k(i) Then
t = k(d)
k(d) = k(i)
k(i) = t
End If
Next i
Next d
TextBox1.Value = s ' Зачем нужны Vivod и Vivod1?
ListBox1.List = k
