Последовательности целых чисел - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д