Вычисление минимального и максимального элементов в одномерных массивах
При вычислении минимального или максимального элементов в одномерном массиве должны выполняться следующие условия:
Y(i), если Y(i) > Max;
Max =
Max, если Y(i) £ Max.
Y(i), если Y(i) < Min;
Min =
Min, если Y(i) ³ Min.
За первоначальное значение максимального элемента можно принять очень маленькое число или первый элемент массива, а за первоначальное значение минимального элемента – очень большое число или первый элемент массива, т.е., например, если массив состоит из целых чисел, то
Max = – 32000 или Max = Y(1),
Min = 32000 или Min = Y(1).
Пример 1
Прочитать с рабочего листа Excel одномерный массив. Вычислить минимальный и максимальный элементы этого массива и поменять их местами. Новый массив поместить на тот же лист ниже первого. Минимальный и максимальный элементы также напечатать на рабочем листе.
Программный код
Sub PR17()
Dim A(10) As Integer
Dim i As Integer, R As Integer
Dim Min As Integer, Max As Integer, IMin As Integer, IMax As Integer
For i = 1 To 10
A(i) = Cells(1, i) ‘ ввод массива
Next i
Min = 32000: Max = –32000
For i = 1 To 10
If A(i) > Max Then
Max = A(i) ‘ вычисление максимума
IMax = i ‘ и его номера
End If
If A(i) < Min Then
Min = A(i) ‘ вычисление минимума
IMin = i ‘ и его номера
End If
Next i
Cells(2, 1) = "Max="
Cells(2, 2) = Max
Cells(2, 4) = "IMax"
Cells(2, 5) = IMax
Cells(3, 1) = "Min="
Cells(3, 2) = Min
Cells(3, 4) = "IMin"
Cells(3, 5) = IMin
R = A(IMax) ‘ меняем местами
A(IMax) = A(IMin) ‘ максимальный и
A(IMin) = R ‘ минимальный элементы
For i = 1 To 10
Cells(5, i) = A(i) ‘ вывод массива
Next i
End Sub
В результате работы этой программы на рабочем листе Excel появятся следующие данные (рис. 5).
Рис. 5. Вычисление минимального и максимального элементов массива
Пример 2
Задан одномерный массив Х(N). Вычислить максимальный из отрицательных элементов этого массива.
Программный код
Sub PR18()
Dim Х(100) As Integer
Dim i As Integer, N As Integer, Max As Integer
N = Val(InpurBox(“Введите N”))
For i = 1 To 10
Cells(1, i) = Int(Rnd * 100 – 50)
X(i) = Cells(1, i)
Next i
Max = –32000
For i = 1 To 10
If X(i) > Max And X(i) < 0 Then Max = X(i)
Next i
MsgBox(“Max=” & Max)
End Sub
Двумерные массивы
Двумерные массивы представляют набор однотипных элементов, расположенных в несколько строк и столбцов, например, двумерный массив из целых чисел выглядит следующим образом:
4 –3 2 4 5
6 3 2 4 0
7 1 2 6 0
12 24 25 8 4
0 4 5 8 3
Каждый элемент двумерного массива обозначается при помощи имени и индексов, заключенных в круглые скобки, например, A(i, j), X(4, 3), P(2×i, j+1), первый индекс – номер строки, второй – номер столбца.
Двумерный массив, называемый также матрицей, описывается при помощи оператора Dim.
Dim A(10, 10) As Тип ‘ нумерация с нуля
Dim A(1 To 10, 1 To 10) As Тип ‘ нумерация с единицы
Матрица, у которой количество строк равно количеству столбцов, называется квадратной матрицей.
Ввод двумерного массива
1. Считывание массива с рабочего листа Excel.
For i = 1 To N
For j = 1 To M
A(i, j) = Cells(i, j)
Next j
Next i
‘ N – количество строк массива, M – количество столбцов массива.
2. Формирование массива на рабочем листе Excel при помощи счетчика случайных чисел, а затем считывание массива с рабочего листа.
Randomize
For i = 1 To N
For j = 1 To M
Cells(i, j) = Int(Rnd * 100 – 50)
A(i, j) = Cells(i, j)
Next j
Next i
Вывод двумерного массива
Вывод двумерного массива на рабочий лист Excel выглядит следующим образом:
For i = 1 To N
For j = 1 To M
Cells(i, j) = A(i, j)
Next j
Next i
Формирование матрицы
При формировании квадратной матрицы будем пользоваться следующими инструкциями. Общий вид квадратной матрицы, например размерности 4´4, выглядит следующим образом:
А11 | А12 | А13 | А14 |
А21 | А22 | А23 | А24 |
А31 | А32 | А33 | А34 |
А41 | А42 | А43 | А44 |
В квадратной матрице выделяются главная и побочная диагонали. Условия нахождения элемента на главной или побочной диагонали показаны на рис. 7.
Относительно каждой диагонали элемент матрицы может находиться выше или ниже диагонали. Условия нахождения элемента в каждой из частей матрицы показаны на рис. 8.
I, J – номера строки и столбца, в которых находится элемент матрицы.
Рис. 7. Главная и побочная диагонали
Рис. 8. Условия нахождения элемента выше или ниже диагонали
Относительно обеих диагоналей элемент матрицы может находиться в одной из четвертей. Условия нахождения элемента в каждой из них показаны на рис. 9.
|
Рис. 9. Нахождение элемента в одной из четвертей
Пример 1
Сформировать матрицу X(N, N) вида
На побочной диагонали матрицы стоят 5, на главной диагонали стоят 4, в I четверти – 0, во II четверти – 2, в III четверти – 3, в IV четверти – 1.
Программный код
Option Explicit
Sub PR22()
Dim a(10, 10) As Integer
Dim N As Integer
Dim i As Integer
Dim j As Integer
N = Val(InputBox("Введите N"))
Range(Cells(1, 1), Cells(100, 100)).Select ‘ выделяет диапазон ячеек
Selection.Clear ‘ очищает выделенный диапазон ячеек
Cells(1, 1).Select ‘ снимает выделение
For i = 1 To N
For j = 1 To N
If i + j = N + 1 Then a(i, j) = 5
If i = j Then a(i, j) = 4
If i < j And i + j < N + 1 Then a(i, j) = 0
If i < j And i + j > N + 1 Then a(i, j) = 2
If i > j And i + j > N + 1 Then a(i, j) = 3
If i > j And i + j < N + 1 Then a(i, j) = 1
Next j
Next i
Cells(1, 1) = "Полученная матрица"
For i = 1 To N
For j = 1 To N
Cells(i + 1, j) = a(i, j)
Next j
Next i
End Sub
Пример 2
Сформировать матрицу X(N, N) вида
… | N | ||||
… | |||||
… | |||||
. | . | . | . | … | . |
… | |||||
… | N |
Описание и вывод матрицы будут как в предыдущем примере, здесь и далее будем рассматривать только фрагмент программы, в котором формируется матрица.
For i = 1 To N
For j = 1 To N
X(i, j) = 0
If i = j Then X(i, j) = i
If i + j = N + 1 Then X(i, j) = N + 1 – i
Next j
Next i
Пример 3
Сформировать матрицу Y(N, N) вида
… | |||||
… | |||||
… | |||||
. | . | . | . | … | . |
… | |||||
… | |||||
… |
For i = 1 To N
For j = 1 To N
If i = 1 Or i = N Or j = 1 Or j = N Then Y(i, j) = 1 Else Y(i, j) = 0
Next j
Next i
Пример 4
Сформировать матрицу Z(N, N) вида
… | ||||||
… | ||||||
… | ||||||
… | ||||||
. | . | . | . | . | . | . |
… | ||||||
… | N |
For i = 1 To N
For j = 1 To N
If i >= j Then Z(i, j) = j Else Z(i, j) = 0
Next j
Next i
Пример 5
Сформировать матрицу Q(N, N) вида
… | ||||
… | ||||
… | ||||
. | . | . | . | … |
… |
For i = 1 To N
For j = 1 To N
If (i +j) mod 2 = 0 Then Q(i, j) = 1 Else Q(i, j) = 2
Next j
Next i