Задание 1. Дан вектор X(n). Обеспечить ввод элементов вектора с клавиатуры. Найти произведение всех элементов вектора, а также среднее арифметическое четных элементов вектора.
Выполнение. Перед вводом элементов вектора необходимо запросить их общее количество – n, а потом и сами элементы вектора по одному в цикле. Как и в предыдущих примерах, произведение будет «накапливаться» на каждом проходе цикла поэтапно в какой-либо переменной, например p. Начальное значение для этой переменной – 1.
Расчет среднего арифметического возможен в том случае, если имеется сумма и количество всех элементов, подлежащих подсчету согласно условию, т.е. четных. Для «накопления» суммы и количества необходимо также предусмотреть какие-либо незадействованные переменные, например s и k соответственно. Начальные значения для них – 0.
Значения p, s и k будут пошагово «накапливаться» при последовательном просмотре всех элементов вектора в цикле, начиная с первого и до последнего. При подсчете s и k нечетные элементы будут пропускаться.
Результаты подсчетов будут известны после завершения проходов по всем элементам вектора. Для получения среднего арифметического следует выполнить деление s / k.
Программа
1 Sub massiv_1() 'Начало подпрограммы (макроса)
2 n = Val(InputBox("Введите количество элементов вектора?")) 'Ввод общего колечества элементов с клавиатуры
3 ReDim x(n) 'Описание массива (вектора) x и выделение памяти под него
4 For i = 1 To n 'Начало цикла, обеспечивающего ввод самих элементов вектора
5 x(i) = Val(InputBox("Введите элемент " + Str(i) + "?")) 'Ввод элемента с номером i с клавиатуры
6 Next i 'Конец цикла, обеспечивающего ввод элементов вектора
7 p = 1 'Начальное значение произведения задается 1
8 s = 0 'Начальное значение суммы задается 0
9 k = 0 'Начальное значение количества задается 0
10 For i = 1 To n 'Начало цикла, обеспечивающего просмотр всех элементов вектора
11 p = p * x(i) 'Домножение очередного элемента вектора с номером i в произведение p
12 If x(i) Mod 2 = 0 Then 'Проверка, является ли очередной элемент вектора с номером i четным
13 s = s + x(i) 'Если да, то добавление его в сумму s
14 k = k + 1 'А также увеличение счетчика количества четных элементов на 1
15 End If 'Конец действий, относящихся к четным элементам
16 Next i 'Конец цикла, обеспечивающего просмотр всех элементов вектора
17 Debug.Print "Произведение = "; p; " среднее арифметическое четных = "; s / k 'Вывод результата на экран
18 End Sub 'Окончание подпрограммы
Словесное описание программы
После ввода количества элементов вектора (с. 2) происходит описание вектора с именем X и количеством элементов n (c. 3). В строчках 4–6 осуществляется последовательный перебор номеров элементов вектора от 1 до последнего, т.е. n и ввод каждого элемента вектора с клавиатуры (с. 5).
После задания начальных значений для переменных p, s и k (с. 7 – 9) с помощью цикла организуется блок повторяющихся действий над каждым элементом вектора, начиная с 1 и до последнего, т.е. n (с. 10–16). Среди этих действий: домножение очередного элемента вектора в произведение p (с. 11); проверка, что очередной элемент является четным (с. 12); а также для четных элементов добавление их в сумму s (с. 13) и увеличение счетчика k (с. 14).
После просмотра всех элементов вектора выводится результат (с. 17).
Блок-схема
Задание 2. Дан вектор X(n). Обеспечить ввод элементов вектора с клавиатуры. Найти максимальный среди элементов, стоящих на нечетных местах.
Выполнение. Поиск минимального или максимального элемента осуществляется путем последовательного сравнения какой-либо переменной с каждым элементом вектора, начиная от первого и до последнего. Назовем эту переменную max. При поиске максимума проверяется, если очередной элемент вектора больше этой переменной max, то его значение записывается в эту переменную. Если далее среди последующих элементов находится такой, чье значение больше этого нового значения max, то уже его значение записывается в max. Таким образом, после просмотра всех элементов вектора в переменной max оказывается значение максимального среди всех элементов вектора.
Перед началом просмотра элементов вектора важно установить начальное значение для переменной max. Это значение должно быть таким, чтобы при просмотре первого элемента вектора его значение обязательно оказалось бы больше начального значения max. Принимая во внимание, что целые числа в VBA имеют размерность 16 бит, минимально возможным значением является -32768. Следовательно, первый элемент вектора не может быть меньше этого значения. Поэтому начальным значением для max следует задать -32768.
По условию задачи следует искать максимум не среди всех элементов вектора, а только среди тех, что стоят на нечетных местах. Поэтому перед проверкой очередного элемента следует убедиться, что его порядковый номер в массиве – i нечетный.
Программа
19 Sub massiv_2() 'Начало подпрограммы (макроса)
20 n = Val(InputBox("Введите количество элементов вектора?")) 'Ввод общего колечества элементов с клавиатуры
21 ReDim x(n) 'Описание массива (вектора) x и выделение памяти под него
22 For i = 1 To n 'Начало цикла, обеспечивающего ввод самих элементов вектора
23 x(i) = Val(InputBox("Введите элемент " + Str(i) + "?")) 'Ввод элемента с номером i с клавиатуры
24 Next i 'Конец цикла, обеспечивающего ввод элементов вектора
25 max = -32768 'Задание для max минимально возможного значения
26 For i = 1 To n 'Начало цикла, обеспечивающего просмотр всех элементов вектора
27 If i Mod 2 <> 0 Then 'Проверка, является ли текущий номер элемента нечетным
28 If max < x(i) Then 'Если да, то сравнение текущего элемента с переменной max
29 max = x(i) 'Если текущий элемент оказался больше, то записываем его в max
30 End If 'Конец действий, относящихся к сравнению текщуего элемента с max
31 End If 'Конец действий, относящихся ко всем элементам, стоящим на нечетных местах
32 Next i 'Конец цикла, обеспечивающего просмотр всех элементов вектора
33 Debug.Print 'Максимум из элементов, стоящих на нечетных местах = "; max 'Вывод результата на экран
34 End Sub 'Окончание подпрограммы
Словесное описание программы
После ввода количества элементов в векторе (с. 2) и его описания (с. 3) обеспечивается пошаговый ввод всех элементов вектора (с. 4–6). В с. 7 для max задается минимально возможное значение для переменных разрядностью 16 бит.
Перебор всех элементов вектора осуществляется в с. 8–14. Для каждого элемента вектора проверяется, является ли его номер i нечетным (с. 9). Если является, то делается сравнение этого элемента с переменной max (с. 10). Если этот элемент оказался больше max, то его значение записывается в max (с. 11).
После просмотра всех элементов вектора результат (max) выводится на экран (с. 15).
Блок-схема
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.