Задание 1. Для функции
при x и y < 7, в остальных случаях. |
выдать на печать значения функции, большие 5.8, и определить их число.
Выполнение. Функция v рассчитывается по одной из двух
формул в зависимости от условий: Если x и y < 7, то считается по верхней формуле –
, иначе по нижней –
.
У этой функции, как видно из условия, 4 аргумента: x, y, z и w. Поэтому следует рассчитать значения этой функции для всех сочетаний этих четырех аргументов. Для этого потребуется 4 вложенных друг в друга цикла: по одному для каждого аргумента. Аргумент x имеет заранее известный диапазон значений и фиксированный шаг, поэтому для него можно использовать цикл FOR-NEXT.
Аргумент y также имеет заранее известное начальное значение и конечное значение. Однако шаг переменный, поэтому цикл FOR-NEXT не применим. Вместо этого необходимо использовать один из циклов с условием, например WHILE-WEND. При этом придется явным образом (отдельной строчкой) задавать начальное значение, проверять нахождение переменной y в допустимых пределах, и отдельной строчкой, в зависимости от заданного условия, рассчитывать очередное значение y.
Аргумент z принимает 7 фиксированных
значений, что видно из диапазона значений его индекса .
Первое значение
, каждое последующее
значение (zi+1) рассчитывается на основе
предыдущего (zi) по указанной формуле
. Следовательно, для перебора
значений аргумента z потребуется дополнительная
переменная, которая будет выполнять роль счетчика значений z. Пусть это будет переменная i. Очевидно, значения этой
переменной удобно перебирать в цикле FOR-NEXT.
Аргумент w принимает 4 фиксированных значения, заданных явно. Для перебора этих значений удобно поместить их в массив в самом начале программы. Затем завести переменную-счетчик, например j, которая будет выполнять роль порядкового номера значений w и изменять его последовательно от 1 до 4 с помощью цикла FOR-NEXT.
Внутри самого вложенного цикла (цикла для w) следует рассчитывать значения функции, сравнивать их, согласно условию, с 5.8, и выводить те, которые из них больше, на экран, подсчитывая их количество. Для подсчета количества таких значений необходима переменная k. После всех циклов следует выводить значение этой переменной на экран.
Программа
1 Sub massiv_i_vlojen() 'Начало подпрограммы (макроса)
2 Dim w(4) 'Описание массива для аргумента w
3 w(1) = 5 'Задание значения для элемента 1 массива w
4 w(2) = 9 'Задание значения для элемента 2 массива w
5 w(3) = 13 'Задание значения для элемента 3 массива w
6 w(4) = 11 'Задание значения для элемента 4 массива w
7 k = 0 'Задание начального значения для счетчика k
8 For x = 10 To 14 Step 0.7 'Начало цикла для аргумента x
9 y = 9 'Задание начального значение аргумента y
10 While y <= 17 'Проверка верхнего предела аргумента y
11 z = 1.6 'Задание начального значения для аргумента z
12 For i = 1 To 7 'Начало цикла для аргумента z (счетчик - i)
13 For j = 1 To 4 'Начало цикла для аргумента w ( счетчик - j)
14 If x < 7 And y < 7 Then 'Проверка, следует ли считать функцию v по верхней или нижней формуле
15 v = (Log(y) + Tan(z)) ^ x 'Расчет v по верхней формуле
16 Else 'Иначе
17 v = Sin(z) + 1 / Tan(w(j)) ^ 2 'Расчет v по нижней формуле
18 End If 'Конец выбора между верхней и нижней формулами
19 If (v > 5.8) Then 'Проверка, слудет ли выводить текущее значений функции v на экран
20 Debug.Print "При x="; x; ", y="; y; ", z="; z; ", w="; w(j); " v="; v 'Вывод текущего значения функции v на экран
21 k = k + 1 'Увеличение счетчика выведенных на экран значений функции v на 1
22 End If 'Конец действий, относящихся к выводу значений функции v на экран и их подсчету
23 Next j 'Конец цикла для аргумента w (счетчик j)
24 z = 54 * z + Cos(z) ^ 2 'Расчет слудеющего значения аргумента z
25 Next i 'Конец цикла для аргумента z (счетчик i)
26 If y < 12 Then y = y + 1 Else y = y + 2 'Рассчет следующего значение аргумента y
27 Wend 'Конец цикла для аргумента y
28 Next x 'Конец цикла для аргумента x
29 Debug.Print "Общее число выведенных значений v="; k 'Вывод на экран общего количества выведенных на экран значений функции v
30 End Sub 'Окончание подпрограммы
Словесное описание программы
Прежде всего, описывается массив w из четырех элементов (с. 2), и его элементы заполняются указанными по заданию значениями (с. 3–6). Далее задается начальное значение для счетчика выведенных на экран значений функции v – переменная k (с. 7). Перебор значений аргумента x осуществляется циклом в строчках 8–27. В теле этого цикла, прежде всего, рассчитывается начальное значение для аргумента y (с. 9). Далее следует цикл для перебора значений аргумента y (с. 10–27). Перед концом цикла рассчитывается следующее значение y (с. 26), а в теле цикла, прежде всего, задается начальное значение для аргумента z (с. 11). Далее следует цикл для перебора семи значений этого аргумента z с помощью счетчика i (с. 12–25). В теле этого цикла располагается последний цикл для перебора значений аргумента w с помощью счетчика j (с. 13–23). В теле этого цикла, прежде всего, принимается решение (с. 14), по какой формуле следует рассчитывать функцию v: верхней (с. 15) или нижней (с. 17). Далее, если значение функции больше 5.8 (с. 19), то осуществляется вывод его на экран (с. 20) и увеличение счетчика таких выведенных на экран значений (с. 21). Перед завершением тела цикла для аргумента z, значения которого считаются счетчиком i, рассчитывается следующее значение z (с. 24). Вывод общего количества выведенных на экран значений функции v – переменной k осуществляется в с. 29.
Блок-схема
R=21
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.