Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
П р и м е р 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
For i = k To N – 1 ‘начиная с k-го и до предпоследнего элемента
X(i) = X(i + 1) ‘сдвигаем элементы
массива влево
Next i
Cells(3, 1) = "полученный массив"
For i = 1 to N - 1
A(i)=x(i) ‘с формированием массива A
Cells(4, i) = A(i) ‘вывод массива
Next i: End Sub
Удаление одного элемента из одномерного массива происходит по следующей схеме:
1) указывается или определяется порядковый номер элемента, который необходимо удалить из массива;
2) все элементы, стоящие за удаляемым элементом, сдвигаются на одну позицию влево;
3) количество элементов уменьшается на единицу.
При вставке одного элемента в массив необходимо сначала освободить место для вставляемого элемента, т. е. «раздвинуть» элементы, а затем вставить новый элемент в массив, увеличив массив на один элемент.
П р и м е р 2. Дан массив X = {–3; 2; 0; 6; –8; 12; 0; 5; 77}. После первого числа 0 вставить сумму всех элементов массива. Алгоритм вставки элемента массива процедуры PR2 представлен на рис. 10.2.
Программный код:
Option Explicit
Sub PR2 ()
Dim x(11) As Integer, i As Integer, a As Integer, n As Integer
Dim i0 As Integer ‘ порядковый номер числа 0
s = 0: n = 10
For i = 1 To n
x(i) = Cells(1, i) ‘ ввод массива и
s = s + x(i) ‘ вычисление суммы элементов
Next i
For i = 1 To n ‘ поиск порядкового номера первого числа 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)
Next i
x(i0 + 1) = s ‘ вставка элемента равного сумме
Cells(3, 1) = "полученный массив"
For i = 1 to n+1 ‘ вывод полученного массива
Cells(4, i) = x(i)
Next i
End Sub
При раздвижке элементов массив приобретет следующий вид:
– 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
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
End Sub
Дата публикования: 2015-04-06; Прочитано: 174 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!