Создание новых массивов при решении задач

 

Часто при решении практических задач возникает необходимость создания нового массива из выборочных элементов исходного массива. Особенностью этого типа задач является то, что индексы элементов этих массивов не совпадают. Следовательно, в цикле должны изменяться два параметра и необходимо использовать прием организации цикла с несколькими одновременно изменяющимися параметрами. Обычно в блоке решения перед циклом начальные значения индексов новых массивов принимаются равными нулю. Далее в цикле по мере отбора элементов в новый массив вычисляется текущее значение этих индексов, которые и присваиваются соответствующим элементам.

Пример 9. Дан вещественный массив А(N). Вывести отдельно массив целых чисел (если они есть в исходном массиве) и массив вещественных чисел.

Решение.Для фиксации текущих значений индексов в новых массивах введем счетчик к для массива B и счетчик q для массива D. При нахождении элементов массива соответствующих первому условию задачи увеличим значение к на единицу и присвоим этот индекс первому элементу нового массива B и т.п.

Аналогичная процедура повторяется и при выполнении второго условия задачи, где формируется еще один массив D.

 

Sub primer_9()

Dim A(10), B(10), D(10) As Single

For i = 1 To 10 ' ввод массива

A(i) = Cells(1, i)

Next i

For i = 1 To 10 ' вывод начального массива

Cells(2, i) = A(i)

Next i

к = 0: q = 0 'начальные значения индексов новых массивов

For i = 1 To 10

If Abs(A(i)) - Int(A(i)) = 0 Then

к = к + 1: B(к) = A(i) ' вычисление текущего индекса массива В

Else

q = q + 1: D(q) = A(i) 'запись элемента А(i) в новый массив D

End If

Next i

If к = 0 Then

Cells(3, 1) = "В массиве целых чисел нет"

Else

Cells(3, 1) = "Массив целых чисел B(к))"

For i = 1 To к

Cells(4, i) = B(i)

Next i

End If

If q = 0 Then

Cells(5, 1) = "В массиве дробных чисел нет"

Else

Cells(5, 1) = "Массив вещественных чисел D(q)"

For i = 1 To q

Cells(6, i) = D(i)

Next i

End If

End Sub

 

Результата программы: