Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekz_informat (1).docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
223.77 Кб
Скачать

13. Двумерные массивы …

При работе с таблицами часто нужно применить одну и туже операцию к целому диапазону ячеек или выполнить расчеты по формулам,зависящим от большого массива данных,к таким задачам относятся,например,умножение матрицы на матрицу или умножение матрицы на число.Для решения таких задач в exelе можно исп.массивы. Диапазон массива-это блок ячеек,который имеет общ. Формулу массива. Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор однотипных данных, имеющий общее имя, доступ к элементам которого осуществляется по двум индексам. Наглядно двумерный массив удобно представлять в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей в i-й строке и j-м столбце понимают некоторый элемент массива a[i][j]. По-другому двумерный массив также называют матрицей, а в том случае, когда n=m.

 Умножение матрицы на вектор Пример. Дана матрица А(2,3) и вектор В(3). Найти произведение А*В. Программа Sub UmnMatNaVec() Dim a(2, 3) As Single, b(3) As Single, c(2) As Single Dim s As Single, i, j As Integer 'ввод матрицы For i = 1 To 2 For j = 1 To 3 a(i, j) = Cells(i + 1, j) Next j Next i 'ввод массива For i = 1 To 3 b(i) = Cells(4, i + 1) Next i For i = 1 To 2 s = 0 For j = 1 To 3 s = s + a(i, j) * b(j) Next j c(i) = s Next i 'вывод нового массива b(5) Cells(6, 1) = "Массив c(2)" For i = 1 To 2 Cells(6, i + 1) = c(i) Next i End Sub

Умножение матриц

Private Sub CommandButton1_Click()

Dim i As Double, j As Double, n As Double

Dim a() As Double, b() As Double, c() As Double, k As Double

n = InputBox("Введите n")

ReDim a(1 To n, 1 To n), b(1 To n, 1 To n), c(1 To n, 1 To n)

Cells(1, 1) = "Матрица А"

Cells(11, 1) = "Матрица В"

Cells(1, 14) = "Матрица АВ"

For i = 1 To n

For j = 1 To n

a(i, j) = (n - j) * Cos(i)

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

Next j

Next i

For i = 1 To n

For j = 1 To n

If i < j Then

b(i, j) = 1 / (i + j - 1)

ElseIf i = j Then

b(i, j) = 0

Else

b(i, j) = (-1) / (i + j - 1)

End If

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

Next j

Next i

For i = 1 To n

For j = 1 To n

For k = 1 To n

c(i, j) = c(i, j) + a(i, k) * b(k, j)

Next k

Cells(i + 1, j + 13) = c(i, j)

Next j

Next i

End Sub

Вопрос 16. Рекурсия. Рекурсивный алгоритм вычисление факториала.Рекурсивный алгоритм, если его описание содержит обращение к самому себе!Программа рекурсивная, если она вызывает сама себя!

n!= 1,n=0,1

(n-1)!*n

Sub click()

Dim n As Integer

n=cells(2,1)

cells(2,2)=f(n)

End Sub

Function f(n As Integer) As Double

Debug.Print “на входе n=”; n; “f=”; f

If n>1 then f=f(n-1)*n Else f=1

Debug.Print “на выходе n=”;n;”f=”;f

End Function

Debug.Print -способ печати

на входе n=3 f=0

на входе n=2 f=0

на входе n=1 f=0

на выходе n=1 f=1 n=3

на выходе n=2 f=2

на выходе n=3 f=6

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