Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
66
Добавлен:
10.04.2015
Размер:
673.28 Кб
Скачать

10.1. Примеры выполнения работы

П р и м е р 1. Задан массив Х = (– 4; 8; – 6; 5; 8; 4). Удалить из массива Х элемент, стоящий на третьем месте, и сформировать новый массива A.

Алгоритм процедуры PR1 удаления элемента из массива с формированием нового массиваAпоказан на рис. 10.1. Программный код, в котором удаляется третий элемент массива Х с формированием нового массиваA, выглядит так:

Option Explicit

Sub PR1 ( )

Dim x(1 to 6) as As Integer, A(1 to 5) As Integer

Dim N As Integer, i As Integer

Dim k As Integer

k = 3 : n=6

For I=1 to n : x(I) = Val(Input Box("Вв. x")):Next I

Fori=kToN– 1 ‘начиная сk-го и до предпоследнего элемента

X(i) =X(i+ 1) ‘сдвигаем элементы массива влево

Nexti

Cells(3, 1) = "полученный массив"

Fori= 1toN- 1

A(i)=x(i) ‘с формированием массиваA

Cells(4, i) = A(i) ‘вывод массива

Nexti:EndSub

Удалениеодного элемента из одномерного массива происходит по следующей схеме:

1) указывается или определяется порядковый номер элемента, который необходимо удалить из массива;

2) все элементы, стоящие за удаляемым элементом, сдвигаются на одну позицию влево;

3) количество элементов уменьшается на единицу.

При вставкеодного элемента в массив необходимо сначала освободить место для вставляемого элемента, т. е. «раздвинуть» элементы, а затем вставить новый элемент в массив, увеличив массив на один элемент.

П р и м е р 2. Дан массив X= {–3; 2; 0; 6; –8; 12; 0; 5; 77}. После первого числа 0 вставить сумму всех элементов массива. Алгоритм вставки элемента массива процедурыPR2 представлен на рис. 10.2.

Программный код:

OptionExplicit

Sub PR2 ( )

Dim x(11) As Integer, i As Integer, a As Integer, n As Integer

Dimi0AsInteger‘ порядковый номер числа 0

s = 0: n = 10

For i = 1 To n

x(i) = Cells(1, i) ‘ ввод массива и

s = s + x(i) ‘ вычисление суммы элементов

Next i

Fori= 1Ton‘ поиск порядкового номера первого числа 0

If x(i) = 0 Then

i0 = i

Exit For ‘ выход из цикла

End If

Next i

For i = n + 1 To i0 + 1 Step –1 ‘ раздвигаем элементы массива

x(i) = x(i – 1)

Nexti

x(i0 + 1) = s ‘ вставка элемента равного сумме

Cells(3, 1) = "полученный массив"

Fori= 1ton+1 ‘ вывод полученного массива

Cells(4, i) = x(i)

Next i

EndSub

При раздвижке элементов массив приобретет следующий вид:

– 3 2 0 0 6 – 8 12 5 77.

После вставки суммы, получим массив:

– 3 2 0 14 6 – 8 12 5 77.

П р и м е р 3. Задан массив B из 30 целых чисел. Сформировать новый массив D из тех элементов исходного массива B, которые кратны своему индексу. Массив В ввести с помощью генератора случайных чисел в интервале [30; 80]. Исходный и результирующий массив распечатать на «Лист 1» рабочий книги в два столбца.

Особенностью этой задачи является то, что размер нового формируемого массива неизвестен и не может быть заранее определен, поэтому для обозначения индексов исходного и нового массивов вводят две независимые переменные –IиJ. Фрагмент алгоритма примера 3 представлен на рис. 10.3.

Программный код:

Option Explicit

Sub PR3()

Dim B(1 To 30) As Integer

Dim D(1 To 30) As Integer

Dim i As Integer, J As Integer

Randomize

For i = 1 To 30

B(i) = Int(Rnd * (80 – 30) + 30)

Cells(i, 1) = i: Cells(i, 2) = B(i)

Next i

J = 0

For i = 1 To 30

If B(i) Mod i = 0 Then J = J + 1 : D(J) = B(i)

Next i

For i = 1 To J

Cells(i, 3) = D(i)

Next i

EndSub

Соседние файлы в папке Лаб. работы по VBA