Массив – это совокупность элементов, имеющих одинаковое имя и отличающихся номером (индексом) их расположения в последовательности.
Одномерный массив – последовательность чисел А(1), А(2), А(3),..., А(n). Размерность массива равна количеству элементов в нем.
Пример 1: Дан одномерный массив А(i) длиной 20, упорядоченный по убыванию. Переупорядочить массив А(i) по возрастанию его элементов, используя первоначальную упорядоченность массива, и сохранить его значения в массиве В(i). Вывести полученный массив В(i) на дисплей.
Словесный алгоритм решения задачи:
1. В цикле последовательно перебрать все элементы массива В(i) (начиная с первого по двадцатый).
2. Присвоить им значения соответствующих элементов массива А(21−i) (начиная с конца).
3. Вывести полученное значение на дисплей
4. Повторять тело цикла 20 раз.
Блок-схема алгоритма приведена на рис. 6.
Рисунок 6 – Блок-схема примера 1
Пример 2: Дан одномерный массив. Сформировать массив по убыванию. Попарное сравнение чисел в массиве и постановка их по убыванию.
|
|
Схема алгоритма и код программы для VBA приведены на рис. 7 и 9.
Пример 3: Сформировать одномерный массив по убыванию методом пузырька.
Блок-схема алгоритма и код программы для VBA приведены на рис. 8 и 10.
Пример 4: Найти максимальный элемент одномерного массива.
Описание алгоритма:
1. Задается число элементов массива n.
2. Начальному значению переменной i присваивается 0.
3. Дается приращение 1 значению переменной i.
4. Первому a(i) числу присваивается максимум.
начало |
a(i) i = 1…n |
m = n |
i = 0 |
j = i + 1 |
i = i + 1 |
a(i)<a(j) |
c = a(i) |
a(i) = a(j) |
a(j) = c |
j < n |
m = m - 1 |
m > 2 |
a(i) |
END |
Рисунок 7 – Блок-схема примера 2
начало |
a(i) i=1…n |
i = 0 |
l = 1 |
m = n |
max = a(i) 0 |
i = i + 1 |
max < a(i) |
i < n |
max=a(i) |
l = i |
i = m |
a(l) = a(i) |
a(i) = max |
i = 1 |
n = n - 1 |
n < 1 |
a(i) |
END |
Рисунок 8 – Блок-схема примера 3
Sub poparnoe_sravnenie() Dim i, j, m as Integer For m = 5 to 2 Step -1 For i = 1 to (m - 1) j = i + 1 a(i) = cells(1,i) a(j) = cells(1,j) If a(i) < a(j) then Cells(1,j) = a(i) Cells(1,i) = a(j) Next i Next m End Sub | Sub puzir() Dim i, j as Integer Dim k, max as Variant For j = 5 to 1 Step -1 i = 1 l = 1 k = Cells(1, j) max = Cells(1, i) For i = 1 to j If Cells(1, i) < max then max = Cells(1, i) l = i End If Next i Cells(1, j) = max Cells(1, l) = k Next k End Sub |
Рисунок 9 – Код программы примера 2 | Рисунок 10 – Код программы примера 3 |
5. Делается сравнение, переменной a(i) с максимумом. Если условие выполняется, переменной a(i) присваивается максимум, если нет— делается еще одна проверка в п.6
6. Проверяется, не закончились ли элементы, которые нужно перебирать (i). Если значение переменной i не удовлетворяет условию, происходит приращение i и ввод новой переменной a(i) – переход к п.3; иначе – завершается выполнение программы.
|
|
Блок-схема алгоритма и код программы приведены на рис. 11 и 12.
Пример 5: Найти число положительных, отрицательных чисел и нулей в одномерном массиве
Описание алгоритма:
1. Задаются начальные значения переменных i, j, g, m.
2. Организуется цикл пока значение i больше или равно n. (n – последнее число в массиве).
3. В теле цикла делаются 3 проверки чисел массива на знак числа или равенство нулю. Если значение переменной a(i) удовлетворяет условию, то счетчик увеличивает на единицу соответственно j, g или m ( каждый счетчик соответствует своему условию: j − для а(i)>0; g − для а(i)>0; m − для а(i)=0).
Блок-схема алгоритма и код программы приведены на рис. 13 и 14.
начало |
a(i) i = 1…n |
i = 0 |
i = i + 1 |
a(i) = max |
a(i) > max |
a(i) = max |
i < n |
max |
END |
Рисунок 11 – Блок-схема примера 4
Function maximum(a)
Dim i, n as Integer
n = a.Rows.Count * a.Columns.Count
m = a(1)
For i = 2 to n
If a(i) > m Then
m = a(i)
End If
Next i
maximum = m
End Function
Рисунок 12 – Код программы примера 4
Пример 6: Найти сумму диагональных элементов 3-х мерного массива. Блок-схема алгоритма приведена на рис. 15.
Пример 7 (Задача с использованием алгоритма интерполирования): Имеются данные измерения температуры воздуха в продолжение дня: 8 часов − 7°С; 14 часов − 15°С; 10 часов − 10°С; 17 часов − 9°С и т.д.
Необходимо определить, какой была температура в 9 часов, в 12 часов 30 минут, в 15 часов 15 минут.
Описание алгоритма:
1. Задается начальное значение переменных i, T, t.
2. Организуется цикл пока значение i больше или равно n. (n – последнее число в массиве).
начало |
a(i) i=1…n |
i = 0 |
j = 0 |
g = 0 |
m = 0 |
i = i + 1 |
a(i) > 0 |
a(i) < 0 |
a(i) = 0 |
i > n |
j = j + 1 |
g = g + 1 |
m = m + 1 |
i > n |
j, g, m |
END |
Рисунок 13 – Блок-схема примера 5
Function zxc(a)
Dim i, j, m, n, g As Integer
n = a.Rows.Count * a.Columns.Count
j = 0
g = 0
m = 0
For i = 1 to n
If a(i) > 0 Then
j = j + 1
End If
If a(i) < 0 Then
g = g + 1
End If
If a(i) = 0 Then
m = m + 1
End If
Next i
MsgBox(“положительных” + Str(j) + “_” + “отрицательных” + Str(g) + “_” + “нули” + Str(m))
End Function
Рисунок 14 – Код программы примера 5
начало |
a(ij) i=1…n j=1…m |
i = 0 |
j = 0 |
S = 0 |
i = i + 1 |
j = i |
S = S + a(ij) |
i < n |
S |
END |
Рисунок 15 – Блок-схема примера 5
3. Проверка условия, входит ли переменная в уменьшенный промежуток, ограниченный известными значениями. Если значение переменной Т не удовлетворяет условию, то проверяется следующий промежуток; иначе – задача решается по формуле .
Блок-схема алгоритма приведена на рис. 16.
Пример 8 (Решение квадратного уравнения):
Описание алгоритма:
1.Задается начальные значения переменных a, b, c.
2.Вычисляется дискриминант.
3.Выполняется проверка, дискриминанта
4. Если дискриминант меньше нуля – появляется сообщение, что решений нет; иначе — находятся корни уравнения.
Блок-схема алгоритма приведена на рис. 17.