Последовательности целых чисел - 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