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

Лабораторная работа № 2

Цель работы: Получить устойчивые навыки работы с одномерным динамическим массивом: декларация одномерного динамического массива, переопределение динамического массива, работа с динамическим массивом.

Общие сведения о динамических массивах

При работе с массивам мы не всегда заранее знаем размер массива, в таких случаях используются массивы, размер которых не задан первоначально, но их размер может изменяться в процессе выполнения программы. Такой массив называется динамическим.

Декларация динамического массива в VBA.

Dim Имя_Массива() As Тип

Переопределение массива в процессе выполнения программы. Для этого используется оператор Redim. Если переобозначение одного и того же массива происходит несколько раз то для сохранения данных используется оператор Preserve.

Redim Prserve Имя_Массива(n) [As Тип]

Обозначение в квадратных скобках может отсутствовать.

Задача 2. Центрирование массива. От каждого из заданных m чисел x1, x2,…,xm отнять их среднее арифметическое: ; , i=1,2,…,m.

Решение

Этап 1. Математическая часть

Алгоритм записан на естественном языке

‘Подсчет количества элементов, ‘вводимого массива x()

  1. m = 0

  2. Если в ячейке не число, то шаг 5, иначе шаг 4

  3. m = m + 1

  4. шаг 3

‘Переопределение массивов x() и X1()

  1. ReDim x(1 To m) As Single

  2. ReDim X1(1 To m) As Single

‘Ввод массива x()

‘Подсчет среднего арифметического

  1. sr = 0

  2. i = 1

  3. Если i<= m, то шаг 10, иначе 14

  4. Ввести x(i)

  5. sr = sr + x(i)

  6. i = i + 1

  7. шаг 9

  1. sr = sr / m

  2. Вывести sr

’Создание нового массива X1()

‘и вывод его

  1. i = 1

  2. Если i <= m, то шаг 22 , иначе шаг 18

  3. X1(i) = x(i) - sr

  4. Вывести X1(i)

  5. i = i + 1

  6. шаг 17

конец

Этап 2. Ввод данных в таблицу Excel

В ячейки А1:A20 вводятся элементы массива a(i).

Этап 3. Определение переменных

Вводится: массив x() (исходный массив( Single)).

В ыводятся (результат): массив X1() (Отцентрированный массив, (Single)), k (номер максимального значения массива, Integer).

Промежуточные переменные: i – счетчик цикла с параметром (Integer), n – счетчик цикла с предусловием (Integer), m – количество элементов в массивах, считается в цикле с предусловием (Integer). Sr – среднее арифметическое элемен-тов массива (Single) (рис.4).

Этап 4. Написание процедуры

На рабочем листе Лист1 при помощи Элементов управления создать элемент Кнопка (СommandBatton1).

Переименовать Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ  Свойства  закладку Alhpabetic  Caption  в Поле ввода ввести новое название кнопки Максимальное число и его номер.

Написать Процедуру-Событие для Кнопки «Центрирование массива»:

Private Sub CommandBatton1_Click()

'Описание переменных

Dim x() As Single

Dim X1() As Single

Dim sr As Single

Dim n As Integer

Dim m As Integer

Dim i As Integer

'Количество элементов вводимого массива x()

m = 0

n = 1

Do Until (IsNumeric(Cells(n, 1).Value) = False)

m = m + 1

n = n + 1

Loop

'Переопределение массивов x() и X1()

ReDim x(1 To m) As Single

ReDim X1(1 To m) As Single

'Ввод массива x()

'Подсчет среднего арифметического

sr = 0

For i = 1 To m

x(i) = Cells(i, 1).Value

sr = sr + x(i)

Next i

sr = sr / m

Range("c1").Value = "Среднее арифметическое равно -> " & sr

'Создание нового массива X1()

' и вывод его в столбец E

Range("E1:E100").Clear

For i = 1 To m

X1(i) = x(i) - sr

Cells(i, 5).Value = X1(i)

Next i

End Sub

Этап 5. Выполнение.

Перейти на рабочий лист (ViewMicrosoft Excel или Alt+F11). Выйти из режима Конструктора. В ячейках А1:А12 вводится массив x(). Нажать Кнопку «Центрирование массива». В диапазоне E1:E12 появится результат отцентрированный массив X1(). (Рис.4)

Этап 6. Переименование листа. Навести курсор на закладку Лист1, правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать, удалить старое название листа и с клавиатуры набрать новое Центрирование, нажать Enter.