1

Тема: Даны два массива. Сформировать массив, содержащий отриц. числа

Есть два массива. Нужно сделать третий массив, который состоит только из отрицательных чисел. Как это сделать?
P и K это количество отрицательных чисел в каждом массиве. Z - общее количество отриц. чисел. Но вот дальше не знаю.. Завтра защита в универе. Помогите, пжл



Sub Pan_6()
Cells.ClearContents
Dim p As Byte
Const M = 10
Const N = 5
Dim A(1 To M) As Double
Dim B(1 To N) As Double



Dim i As Byte
Dim j As Byte

For i = 1 To M
A(i) = InputBox("Введите элемент массива A(" & i & ")")
Cells(2, 1 + i).Value = A(i)
Cells(1, 1 + i).Value = "A(" & i & ")"
Next i

For j = 1 To N
B(j) = InputBox("Введите элемент массива B(" & j & ")")
Cells(4, 1 + j).Value = B(j)
Cells(3, 1 + j).Value = "B(" & j & ")"

Next j

k = 0
For i = 1 To M
    If A(i) < 0 Then
    k = k + 1
    End If
Next i

p = 0
For j = 1 To N
    If B(j) < 0 Then
    p = p + 1
    End If
Next j


z = p + k

2

Re: Даны два массива. Сформировать массив, содержащий отриц. числа

Вариантов масса. С точки зрения производительности, расхода памяти, наглядности кода… Например:

Option Explicit

Sub Sample()
    Dim a(1 To 10) As Double
    Dim b(1 To 5) As Double
    
    Dim c() As Double
    ReDim c((UBound(a) - LBound(a)) + (UBound(b) - LBound(b)) + 1)
    
    Dim i As Integer
    Dim j As Integer
    
    Dim iNegativeCount As Integer
    
    Debug.Print "=== First array ==="
    For i = LBound(a) To UBound(a)
        a(i) = CDbl(Rnd() * 100 - 50)
        Debug.Print i, a(i)
    Next
    Debug.Print
    
    Debug.Print "=== Second array ==="
    For i = LBound(b) To UBound(b)
        b(i) = CDbl(Rnd() * 100 - 50)
        Debug.Print i, b(i)
    Next
    Debug.Print
    
    iNegativeCount = 0
    
    j = LBound(c)
    
    For i = LBound(a) To UBound(a)
        If a(i) < 0 Then
            iNegativeCount = iNegativeCount + 1
            c(j) = a(i)
            j = j + 1
        End If
    Next
    
    For i = LBound(b) To UBound(b)
        If b(i) < 0 Then
            iNegativeCount = iNegativeCount + 1
            c(j) = b(i)
            j = j + 1
        End If
    Next
    ReDim Preserve c(iNegativeCount - 1)
    
    Debug.Print "=== Result array ==="
    For i = LBound(c) To UBound(c)
        Debug.Print i, c(i)
    Next
End Sub

А причём тут «.Cells()»?

3

Re: Даны два массива. Сформировать массив, содержащий отриц. числа

Дело в том, что мы еще мало что изучали и препод просит делать это все селсами и всякой вот такой мишурой. Я уже сделал. Спасибо)