Получить пересечение последовательностей чисел - VB

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

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

Приветствую! Пишу программку вот тут скрин окошка. мне надо считать данные из нескольких текстбоксов (txt11, txt12, txt21, txt22, txt31, txt32) таким образом: слепить txt11 и txt12, txt21 и txt22, txt31 и txt32 в одну строку, перевести числа из них (разделитель - пробел) в Double и записать в двумерный массив (строка 1, 2 и 3 соответственно; число столбцов будет увеличиваться в зависимости от введённого в текстбоксы). Текстбоксов будет много (порядка 25-30), но обработка их будет однотипная и их число известно (первая размерность массива). Как считать, слепить и перевести в Double одну пару текстбоксов я написал:
Теперь большой вопрос - как этот метод распространить на другие текстбоксы, чтобы не копировать миллион раз это, а в одном цикле сделать? P.S. Если ещё можно что-то оптимизировать, подскажите пожалуйста. Давно не писал, сейчас делаю по принципу "чтоб работало" P.P.S Я не знаю, сюда ли это, или в .NET, честно..

Решение задачи: «Получить пересечение последовательностей чисел»

textual
Листинг программы
Function Intersect(A() As Integer, B() As Integer) As Integer()
Dim AB() As Integer
      na% = UBound(A, 1)
      nb% = UBound(B, 1)
      If na% < nb% Then
         nab% = na%
      Else
         nab% = nb%
      End If
      ' первоначальный размер = минимум размерностей
      ReDim AB(0 To nab%) As Integer
      p% = 0
      For i% = 1 To na%
           aa% = A(i%)
           For j% = 1 To nb%
                If aa% = B(j%) Then
                   p% = p% + 1
                   AB(p%) = aa%
                   Exit For
                End If
           Next j%
     Next i%
     ' отрезаем неиспользуемые элементы
     ReDim Preserve AB(0 To p%) As Integer
     Intersect = AB
End Function
 
Sub Test_int()
Dim A(1 To 10) As Integer
Dim B(1 To 20) As Integer
Dim AB()       As Integer
    For i% = 1 To 10
        A(i%) = i%
    Next i%
    For i% = 1 To 20
        B(i%) = 5 + i%
    Next i%
    AB = Intersect(A(), B())
    For i% = 1 To UBound(AB, 1)
        Debug.Print AB(i%)
    Next i%
End Sub

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


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

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

10   голосов , оценка 4.1 из 5
Похожие ответы