Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vba.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Vvod b,n,m,k ‘вызов подпрограммы ввода массива

‘вывод начального массива на рабочий лист

range(“a1”) = ”первоначальный массив”

range(cells(2,1),cells(n+1,m)) = b

‘ обработка массива

FOR і = 1 то l

FOR j=1 то m

b (i,j) = b (i,j) + i+j

Next j

Next i

‘вывод нового массива на рабочий лист

cells(n+2,1) = ”новый массив”

range(cells(n+3,1),cells(2*n+2,m)) = b

End sub

Замечание. Отметим, что имена массива и передающихся переменных совсем не обязательно должны совпадать в вызываемой и в вызывающей программах! (см. раздел «модули и процедуры»).

Примеры решения задач, связанных с двумерными массивами.

При решении задач, связанных с двумерными массивами, часто встречаются такие, где фигурируют термины: главная и побочная диагонали, вертикальная и горизонтальная оси симметрии.

Главная и побочная диагонали с характерны только для квадратных матриц, т.е. для тех, в которых число строк и столбцов одинаково.

Главная диагональ – это множество элементов, для которых индексы строки и столбца, где стоит элемент, совпадают.

Графически это можно показать так:

Элемент aij над диагональю, если i<j, под диагональю, если i>j.

Побочная диагональ – это множество элементов, для которых сумма индексов строки и столбца, где стоит элемент, равна n+1, где n- число строк.

Графически это можно показать так:

Элемент aij над диагональю, если i+j<n+1, под диагональю, если i+j>с+1.

Вертикальная ось симметрии для матрицы am×n- это столбец с номером . Ясно, что если n – нечётное, то это конкретный столбик по центру таблицы, а если n – чётное, то воображаемый столбик, слева и справа от которого размещено одинаковое количество столбцов. Аналогично рассматривается понятие горизонтальной оси симметрии, но только столбцы заменяются на строки и осью будет строка с номером .

Задача1.Найти сумму элементов под побочной диагональю квадратной матрицы размера n×n.

Фрагмент программы и блок-схемы.

s=0

For i-1 to n

For j=1 to n

If i+j > n+1 then s=s+aij

Next j

Next i

В переменной s накапливается сумма, а ввод и вывод массивов осуществляется стандартным образом.

Задача 2. Найти сумму элементов каждой строки целочисленной матрицы аn*m

Найти сумму элементов каждой строки целочисленной матрицы аn*m .Результаты вывести на рабочий лист2 так, чтобы суммы строк располагались справа от строк. Массив ввести с помощью генератора случайных чисел так, чтобы элементы массива лежали между числами [-10, 20]. Блок-схема очевидна.

S ub mass()

n= inputbox(“ввести число строк, n=”)

m= inputbox(“ввести число столбцов, m=”)

dim a() as integer ‘ рассматривается динамический массив

redim a(1 to n, 1 to m)

for i=1 to n

for j=1 to m

a(i,j)= int(31*rnd() -10) ‘ функция int в данной ситуации не обязательна!

Next j

Next i

Worksheets(2).activate

Range(“a1”) = “массив ”

cells(1,m+1) = “сумма в строке ”

for i=1 to n

s=o

for j=1 to m

cells(i+1,j)=a(i,j)

s=s+ a(i,j)

next j

cells(i+1, m+1) = s

next i

end sub

Задача 3.Поменять местами столбцы с номерами k и l матрицы аn×m.

Решение. При вводе данных ( размеров матрицы, самой матрицы), естественно, необходимо задать номера столбцов, для которых необходимо сделать перестановку. Рассмотрим фрагмент блок-схемы, где осуществляется сама перестановка.

Упражнение.

Самостоятельно записать код программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]