Последовательности целых чисел - VB

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

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

Даны две последовательности целых чисел: а1, а2, ..., аn и b1 , b2,..., bm . Среди ai нет повторяющихся чисел, нет их и среди bj , Построить последовательность из элементов bj которых нет среди элементов аi . Я пытался... напутал и дальше не смог

Решение задачи: «Последовательности целых чисел»

textual
Листинг программы
  Dim sT As String
  Dim iFlag As Integer
  Dim iI As Integer
  Dim iJ As Integer
  Dim iK As Integer
  Dim iAN As Integer
  Dim iBM As Integer
  Dim iCL As Integer
  Dim iA() As Integer
  Dim iB() As Integer
  Dim iC() As Integer
  '
  'iAN = CInt(Val(InputBox("N=", "Размер массива A")))
  iAN = 7 ' Эту строку убрать, а в предыдущей строке раскоментить
  'iBM = CInt(Val(InputBox("M=", "Размер массива B")))
  iBM = 12 ' Эту строку убрать, а в предыдущей строке раскоментить
  '
  ReDim iA(1 To iAN) As Integer ' это чтоб не думалось
  ReDim iB(1 To iBM) As Integer ' это чтоб совсем не думалось
  '
  ' Заполняем массив A.
  'For iI = LBound(iA, 1) To UBound(iA, 1) Step 1
  '  ' Персональное приглашение для каждой переменной
  '  sT = "A(" + Trim$(Str$(iI)) + ")="
  '  ' Вводим элементы матрицы
  '  iA(iI) = CDbl(Val(InputBox(sT, "Элементы массива A")))
  'Next iI
  ' Заполняем массив B.
  'For iI = LBound(iB, 1) To UBound(iB, 1) Step 1
  '  ' Персональное приглашение для каждой переменной
  '  sT = "B(" + Trim$(Str$(iI)) + ")="
  '  ' Вводим элементы матрицы
  '  iB(iI) = CDbl(Val(InputBox(sT, "Элементы массива B")))
  'Next iI
  ' Блок убрать, а предыдущий раскоментить
  ' ------------------------------
  ' Мне было влом каждый раз при отладки массивы с клавиатуры вводить. :-)
  iA(1) = 2
  iA(2) = 4
  iA(3) = 12
  iA(4) = 7
  iA(5) = 9
  iA(6) = 11
  iA(7) = 8
  '
  iB(1) = 7
  iB(2) = 8
  iB(3) = 25
  iB(4) = 14
  iB(5) = 77
  iB(6) = 12
  iB(7) = 21
  iB(8) = 9
  iB(9) = 45
  iB(10) = 34
  iB(11) = 43
  iB(12) = 55
  ' На счёт - Среди ai нет повторяющихся чисел, нет их и среди bj - проверяйте сами
  ' Вроде бы нет...
  ' ------------------------------
  '
  ' Построить последовательность из элементов Bj которых нет среди элементов Ai.
  '
  ' Сначала посчитаем, сколько таких есть.
  iCL = 0
  For iJ = LBound(iB, 1) To UBound(iB, 1) Step 1
    For iI = LBound(iA, 1) To UBound(iA, 1) Step 1
      ' Сравниваем iB(iJ) со всеми iA
      If iB(iJ) <> iA(iI) Then
        ' Bj нет среди элементов Ai
      Else
        ' Bj=Ai - опа, попался!
        iCL = iCL + 1
      End If
    Next iI
  Next iJ
  '
  sT = ""
  sT = sT + "Ai"
  sT = sT + Chr$(13) + Chr$(10)
  For iI = LBound(iA, 1) To UBound(iA, 1) Step 1
    sT = sT + Trim$(Str$(iA(iI))) + ";" + Chr$(9)
  Next iI
  sT = sT + Chr$(13) + Chr$(10)
  sT = sT + Chr$(13) + Chr$(10)
  sT = sT + "Bj"
  sT = sT + Chr$(13) + Chr$(10)
  For iI = LBound(iB, 1) To UBound(iB, 1) Step 1
    sT = sT + Trim$(Str$(iB(iI))) + ";" + Chr$(9)
  Next iI
  sT = sT + Chr$(13) + Chr$(10)
  sT = sT + Chr$(13) + Chr$(10)
  sT = sT + Chr$(13) + Chr$(10)
  sT = sT + Chr$(13) + Chr$(10)
  txtMatrix.Text = sT
  '
  If 0 = iCL Then
    MsgBox "Ни одного из Bj нет среди элементов Ai!", vbInformation
  End If
  iCL = iBM - iCL ' сухой остаток
  If 0 = iCL Then
    MsgBox "Строить не из чего!", vbInformation
    Exit Sub
  End If
  '
  ReDim iC(1 To iCL) As Integer ' это уж чтоб совсем не думалось
  '
  iK = 0
  For iJ = LBound(iB, 1) To UBound(iB, 1) Step 1
    iFlag = True
    For iI = LBound(iA, 1) To UBound(iA, 1) Step 1
      ' Сравниваем iB(iJ) со всеми iA
      If iB(iJ) <> iA(iI) Then
        ' Bj нет среди элементов Ai
      Else
        ' Bj=Ai - опа, попался!
        iFlag = False
        ' Одного совпадения достаточно!
        Exit For
      End If
    Next iI
    If True = iFlag Then
      ' Не попался - добавляем в последовательность.
      iK = iK + 1
      iC(iK) = iB(iJ)
    End If
  Next iJ
  '
  sT = sT + "Этих точно в Ai нет:"
  sT = sT + Chr$(13) + Chr$(10)
  For iI = LBound(iC, 1) To UBound(iC, 1) Step 1
    sT = sT + Trim$(Str$(iC(iI))) + ";" + Chr$(9)
  Next iI
  txtMatrix.Text = sT

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


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

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

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