Sub Pr7410(ByRef x() As Double) Dim i, n, j, k As Integer i = 0 n = UBound(x) Do While i < n j = i + 1 Do If x(i) = x(j) Then For k = j To n - 1 x(k) = x(k + 1) Next n = n - 1 Else j = j + 1 If Loop While j <= n i = i + 1 Loop ReDim Preserve x(n) End Sub Private Sub Button1_Click(…) Dim n As Integer n = CInt(InputBox("введите кол." _ &"элементов исходного массива")) Dim x(n - 1) As Double vvod(x, n): vivod(x, ListBox1) Pr7410(x): vivod(x, ListBox2) End Sub |
Рис. 4.7.4-10. Схема алгоритма и программный код процедуры Pr7410()
Пример 4.7.4-10
Решения задачи заключается в последовательном сравнении каждого элемента исходного массива со всеми остальными. В цикле происходит формирование массива x(j). Если элемент массива x(i) равен элементу x(j), то j -й элемент удаляется, а длина массива уменьшается на единицу.
Алгоритм «сжатия» для получения массива с уникальными элементами и программа, реализующая данный алгоритм, приведены на рис. 4.7.4-10.