Получить все уникальные значения массива - VB

Узнай цену своей работы

Формулировка задачи:

Есть таблица 4х4, в ней 16 значений, из них от 2 до 8 уникальны, а остальные дублируют эти значения. Я пытаюсь вывести эти уникальные значения в текстовое поле, но что-то у меня не получается т.к. я проболел тему массивов Посмотрите, пожалуйста, и скажите, что я делаю не так.
Листинг программы
  1. Dim a1...a16 as String
  2. Dim mas(7) As String
  3. Dim x As Integer
  4. mas(x) = a1 ' т.к. это уже уникальное значение '
  5. If a1 <> a2 Then
  6. mas(x) = a2
  7. End If ' и так далее до а16 '
  8. For x = 0 To 7
  9. Text1.Text = Text1.Text & mas(x) & vbCrLf
  10. Next x
Извините если это покажется слишком просто/смешно, но я действительно не понимаю массивы с выводом разобрался, нужно было просто переименовать переменную
Листинг программы
  1. DIM x AS INTEGER[/BASIC] в [BASIC]DIM z AS INTEGER
но теперь в текстовом поле не выводит первое значение, а вместо него идут 3 подряд повторяющихся значения а 2
Листинг программы
  1. mas(0) = a1
  2. If a1 <> a2 Then
  3. mas(1) = a2
  4. End If
  5. If a3 <> a2 And a3 <> a1 Then
  6. mas(2) = a3
  7. End If
  8. If a4 <> a1 And a4 <> a2 And a4 <> a3 Then
  9. mas(3) = a4
  10. End If
  11. For i = 0 To 7
  12. Text1.Text = Text1.Text & mas(i) & vbCrLf
  13. Next i
а так всё работает, но мне нужно чтобы значения сами выстраивались один за одним, а не я указывал им место.. Вобщем, я понял в чём проблема, но до меня не доходит как её решить Весь массив забивается последним значением, стирая предыдущие, а как это исправить я не знаю..

Решение задачи: «Получить все уникальные значения массива»

textual
Листинг программы
  1. Option Explicit
  2. Private Sub Комманда1_Click()
  3. Dim M(3, 3) 'массив
  4. Dim S()
  5. Dim R, C ' переменные циклов
  6. Cls ' чистим форму
  7.  Dim Dict As Object
  8.   Set Dict = CreateObject("Scripting.Dictionary")
  9. Randomize 'инициализируем генератор сл. чисел
  10. With Dict
  11. For R = 0 To 3 'gо всем строкам
  12.     For C = 0 To 3 'по всем столбцам
  13.     M(R, C) = Int(9 * Rnd) 'назначаем случайные от 0 до 8
  14.      Print M(R, C);
  15.         If .Exists(M(R, C)) Then
  16.            .Item(M(R, C)) = .Item(M(R, C)) + 1
  17.         Else
  18.            .Add M(R, C), 1
  19.         End If
  20.     Next C
  21.     Print ' печатаем на форму
  22. Next R
  23. End With
  24. Print
  25. Print "Количество повторений"
  26. S = Dict.keys
  27. For R = 0 To UBound(S)
  28.     If Dict.Item(S(R)) <> 0 Then Print S(R) & " встретилась " & Dict.Item(S(R))
  29. Next R
  30. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы