Цикл ПОКА. Оператор Do While

Кроме цикла ДО, который повторяется заданное количество раз, применяется также цикл ПОКА, который повторяется до тех пор, пока верно некоторое заданное условие (или, наоборот, пока некоторое условие не станет верным). В VBA имеется несколько операторов для реализации цикла ПОКА. Простейший из них – оператор Do While:

Do While условие

операторы, выполняемые в цикле

Loop

Цикл повторяется, пока заданное в нем условие верно, и прекращается, когда оно становится неверным. Условие проверяется перед началом цикла. Если условие сразу оказывается неверным, то цикл не выполняется ни разу.

Примечание – В VBA имеется также оператор цикла Do Until, по структуре аналогичный оператору Do While. Цикл, заданный оператором Do Until, повторяется, пока заданное в нем условие неверно, и прекращается, когда оно становится верным.

Пример 4.16 – В программе вводится одномерный массив из восьми чисел, и выполняется суммирование его элементов (начиная с первого), пока сумма не превысит 20.

Sub primer4_16a()

Dim a(1 To 8) As Integer

MsgBox(“Вводите массив”)

For i = 1 To 8

a(i) = InputBox("a(" & i & ")")

Next i

sum = 0 : i = 0

Do While sum <= 20

i = i + 1

sum = sum + a(i)

Loop

MsgBox ("Сумма достигнута на " & i & "-м элементе и равна" & sum)

End Sub

Здесь переменная sum сначала равна нулю, поэтому условие sum<=20 верно. Выполняются операторы цикла:

i = i + 1

sum = sum + a(i)

Таким образом, переменная sum становится равной первому элементу массива a. Если он превышает 20, то цикл завершается, так как условие sum<=20 оказывается неверным. Выполняется оператор, следующий за циклом, т.е. выводится сообщение о найденной сумме. Если же элемент a(1) не превышает 20, то условие sum<=20 остается верным, и цикл повторяется снова: переменная i принимает значение 2, и к переменной sum прибавляется величина a(2). Цикл повторяется, пока переменная sum не превысит 20.

Следует обратить внимание, что рассмотренная программа не вполне правильная: в ней не предусмотрено, что сумма элементов массива может оказаться меньше 20. В этом случае программа завершится с выдачей сообщения об ошибке, когда переменная i превысит объявленное количество элементов массива (в данном примере оно равно 8). Чтобы исправить эту ошибку, можно изменить программу, как показано ниже.

Sub primer4_16b()

Dim a(1 To 8) As Integer

MsgBox ("Вводите массив")

For i = 1 To 8

a(i) = InputBox("a(" & i & ")")

Next i

sum = 0: i = 0

Do While (sum <= 20) And (i < 8)

i = i + 1

sum = sum + a(i)

Loop

If sum > 20 Then

MsgBox ("Сумма достигнута на " & i & "- м элементе и равна " & Sum)

Else

MsgBox ("Сумма не достигнута")

End If

End Sub

Здесь цикл Do While выполняется до тех пор, пока верны два условия: переменная sum не превышает 20, и переменная i меньше 8. Если хотя бы одно из этих условий нарушается, то цикл прекращается. Поэтому, если в ходе выполнения цикла переменная sum достигает значения, превышающего 20, то цикл прекращается, так как нарушается условие sum <= 20. Если же оказывается, что сумма всех элементов массива меньше 20, то цикл прекращается из-за нарушения условия i < 8 (так как переменная i увеличивается на единицу в каждом цикле и достигает значения 8, когда вычислена сумма всех элементов массива). После прекращения цикла в операторе If проверяется достигнутое значение переменной sum, и выводится соответствующее сообщение.

Пример 4.17– Вычислить сумму ряда Цикл ПОКА. Оператор Do While - student2.ru с точностью до 0,0001.

Sub primer4_17()

n=0 : element = 1 : sum = 0

Do While Abs (element) >= 0.0001

sum = sum + element

n=n+1

factorial = 1

For i=1 To n

factorial = factorial * i

Next i

element = ((-1)^n)/(factorial*(2*n+1))

Loop

MsgBox(“Сумма ” & sum & “достигнута при n = ” & n-1)

End Sub

Здесь Abs – встроенная (стандартная) функция языка VBA, вычисляющая модуль. Для вычисления факториала использован цикл For, рассмотренный ранее. Вычитание при выводе результата (n-1) требуется из-за того, что в цикле переменная n увеличивается, вычисляется очередной (n-й) элемент ряда, и только после этого проверяется условие окончания цикла (превышает ли вычисленный элемент ряда заданную величину 0,0001). Цикл завершится, когда вычисленный элемент ряда окажется меньше 0,0001. Этот элемент уже не прибавляется к вычисляемой сумме. Поэтому на момент окончания цикла переменная n будет иметь значение, на единицу превышающее количество элементов вычисленной суммы.

Подпрограммы

Во многих случаях удобно выделить часть программы в отдельную процедуру (подпрограмму) и вызывать ее для выполнения из другой процедуры. Подпрограмма может иметь входные и выходные параметры. Входные параметры – это величины, передаваемые в подпрограмму из другой (вызывающей) процедуры и являющиеся для вызываемой подпрограммы «исходными данными». Этими величинами могут быть как переменные, так и константы (например, конкретные числа). Выходные параметры – это переменные, являющиеся результатами выполнения вызываемой подпрограммы.

Пример 4.18 – Требуется разработать программу для составления массива из элементов арифметической прогрессии. Первый элемент прогрессии a1, шаг прогрессии d и необходимое количество элементов n указываются пользователем. Составление массива требуется реализовать как подпрограмму.

Sub primer4_18()

Dim a1 As Single, d As Single, n As Byte, a() as Single

a1 = InputBox("Введите первый элемент прогрессии ")

d = InputBox("Введите шаг прогрессии ")

n = InputBox("Укажите, сколько элементов требуется ")

ReDim a (1 To n) ‘a – массив из элементов прогрессии, который требуется составить

Call arif_progr(a1, d, n, a)

For i = 1 To n

MsgBox(i & “-й элемент прогрессии равен “ & a(i))

Next i

End Sub

Sub arif_progr(nach, shag, kol, elem)

elem(1) = nach

For i=2 To kol

elem(i) = elem(i-1)+shag

Next i

End Sub

Здесь подпрограмма primer4_18 является вызывающей (или основной) подпрограммой, а arif_progr – вызываемой подпрограммой. Таким образом, данная программа в целом состоит из двух подпрограмм. При ее запуске курсор должен находиться в пределах текста основной подпрограммы.

В начале основной подпрограммы выполняется ввод данных, а также объявление массива a, который должен быть составлен в результате выполнения программы.

Оператор Call – вызов подпрограммы. В данном примере он имеет следующий вид: Call arif_progr(a1, d, n, a). Здесьarif_progr– имя вызываемой подпрограммы. Переменные a1, d и n – входные параметры, так как при вызове подпрограммы их значения уже заданы. Переменная a – выходной параметр, так как она определяется в результате выполнения подпрограммы.

Следующая строка представляет собой заголовок подпрограммы:

Sub arif_progr(nach, shag, kol, elem)

Количество параметров в вызове подпрограммы (т.е. в операторе Call) и в ее заголовке должно совпадать, и порядок параметров в этих операторах должен соответствовать друг другу.

В данном примере при вызове подпрограммы arif_progr переменная nach получает значение переменной a1, переменная shag – значение d, переменная kol – значение n. Переменная elemполучает значение переменной a, т.е. она будет представлять собой массив из n элементов; так как этим элементам в основной программе не было присвоено никакого значения, они равны нулю.

Затем выполняется подпрограммаarif_progr. В результате ее выполнения вычисляются элементы массива elem. Эти же значения получают и соответствующие элементы массива a в основной программе.

По окончании выполнения вызванной подпрограммы происходит возврат в основную подпрограмму. Выполняется оператор, следующий за оператором Call. В данном случае это оператор цикла, в котором элементы полученного массива выводятся на экран.

Примечание – В данном примере имена переменных в основной программе (a1, d, n и a) отличаются от имен соответствующих переменных в вызываемой подпрограмме (nach, shag, kol и elem). Эти имена могут и совпадать.

В качестве входных параметров могут использоваться не только переменные, но и константы. Пусть, например, в рассматриваемой задаче не требуется запрашивать у пользователя начальный элемент прогрессии и ее шаг: задано, что a1 = 5, d = 2. У пользователя запрашивается только количество элементов прогрессии, которые требуется вычислить. Тогда вызов подпрограммы мог бы иметь следующий вид: Call arif_progr(5, 2, n, a). Никаких изменений в самой подпрограмме arif_progr при этом не требуется. При вызове подпрограммы переменная nach получит значение 5, а переменная shag – значение 2. Все остальные действия выполняются точно так же, как описано выше.

Входные и выходные параметры подпрограммы могут и совпадать: другими словами, величины, передаваемые в подпрограмму, могут изменяться в ней и возвращаться измененными в вызывающую подпрограмму. Это показано в следующем примере.

Пример 4.19 – Требуется разработать подпрограмму, которая бы меняла местами два столбца в двумерном массиве.

Private m As Byte

Sub primer4_19()

Dim a() As Single, k1 As Byte, k2 As Byte, n As Byte

‘a – двумерный массив из m строк и n столбцов

… ‘Объявление и ввод массива (см. примеры, рассмотренные выше).

‘k1 и k2 – номера столбцов, которые требуется поменять местами

k1 = InputBox("Введите первый номер столбца ")

k2 = InputBox("Введите второй номер столбца ")

Call obmen_stolbcov(a, k1, k2)

For i = 1 To m

For j = 1 To n

MsgBox("a(" & i & "," & j & ") = " & a(i,j)) ‘Вывод измененного массива на экран

Next j

Next i

End Sub

Sub obmen_stolbcov(massiv, k1, k2)

For i=1 To m

x = massiv(i, k1)

massiv(i, k1) = massiv(i, k2)

massiv(i, k2) = x

Next i

End Sub

Здесь переменная m (количество строк в массиве) используется в обеих процедурах (primer4_19 и obmen_stolbcov), поэтому ее требуется объявить как переменную уровня модуля, т.е. в операторе Private перед текстом процедур.

В подпрограмму obmen_stolbcov передаются три входных параметра: массив a (в подпрограмме он получает имя massiv) и номера столбцов k1 и k2 (в подпрограмме они получают такие же имена – k1 и k2). В подпрограмме массив изменяется: столбцы с номерами k1 и k2 меняются местами. Измененный массив возвращается в основную подпрограмму.

Примечание – Вместо того, чтобы объявлять переменную m в операторе Private (т.е. как переменную уровня модуля), можно было передать ее в процедуру obmen_stolbcov в качестве одного из параметров.

Функции

Функция, как и подпрограмма – это отдельная процедура, вызываемая из другой процедуры. Отличие функции от подпрограммы состоит в том, что в результате выполнения функции определяется значение одной переменной, в то время как подпрограмма может определять значения нескольких переменных. Имя переменной, определяемой в результате выполнения функции, должно совпадать с именем самой функции.

Функция, как и подпрограмма, имеет параметры, т.е. величины, передаваемые в функцию из вызывающей процедуры. Этими величинами могут быть как переменные, так и константы. Если параметрами являются переменные, то они могут изменяться при выполнении функции, но такие изменения, как правило, нежелательны, так как усложняют понимание программы.

Следует обратить внимание, что способы вызова подпрограммы и функции существенно различаются. Подпрограмма вызывается с помощью специального оператора Call. Функция обычно вызывается в правой части оператора присваивания.

Пример 4.20 – Требуется разработать функцию для вычисления среднего значения заданного столбца в двумерном массиве.

Private m As Byte

Sub primer4_20()

Dim a() As Single, n As Byte, k As Byte

‘a – двумерный массив из m строк и n столбцов

… ‘Объявление и ввод массива (см. примеры, рассмотренные выше).

k = InputBox("Введите номер столбца, для которого требуется вычислить среднее ")

s = sred_stolb(a, k)

MsgBox ("Среднее по " & k & “-му столбцу равно ” & s)

End Sub

Function sred_stolb(massiv, nomer)

sum = 0

For i = 1 To m

sum = sum + massiv(i, nomer)

Next i

sred_stolb = sum / m

End Function

Здесь sred_stolb – функция. Она вызывается в операторе присваивания s = sred_stolb(a, k). Таким образом, переменные a и k (т.е. массив и номер столбца, по которому требуется вычислить среднее) являются входными параметрами функции sred_stolb. В самой функции sred_stolb значения этих переменных присваиваются переменным massiv и nomer соответственно (можно было использовать и любые другие имена переменных). Функция вычисляет среднее по столбцу с номером nomer. Результат присваивается переменной sred_stolb. Следует обратить внимание, что имя этой переменной обязательно должно совпадать с именем самой функции. По окончании выполнения функции sred_stolb происходит возврат в основную программу: выполняется оператор, где была вызвана функция, т.е. оператор s = sred_stolb(a, k). Таким образом, значение функции sred_stolb присваивается переменной s. Затем эта переменная выводится на экран оператором MsgBox.

Примечание – В данном примере, как и в примере 4.19, переменная m объявлена как переменная уровня модуля, чтобы ее можно было использовать во всем модуле (т.е. и в подпрограмме primer4_20, и в функции sred_stolb). Вместо такого объявления можно было передать эту переменную в функцию sred_stolb в качестве одного из параметров.

Пример 4.21 – Требуется разработать программу для решения следующей задачи: найти в двумерном массиве столбец с максимальным средним значением и поменять его местами с первым столбцом.

Для решения этой задачи средние значения по столбцам массива будут вычисляться с использованием функции, разработанной в примере 4.20. Столбец с максимальным средним значением будет определяться в основной программе. Чтобы поменять местами первый столбец массива и столбец с максимальным средним значением, воспользуемся процедурой, разработанной в примере 4.19.

Private m As Byte

Sub primer4_21()

Dim a() As Single, n As Byte

‘a – двумерный массив из m строк и n столбцов

… ‘Объявление и ввод массива.

max_sred = -10000

For j=1 To n

s = sred_stolb(a, j)

If s > max_sred Then

jmax = j

max_sred = s

End If

Next j

call obmen_stolbcov(a, 1, jmax)

MsgBox(“Измененный массив”)

For i = 1 To m

For j = 1 To n

MsgBox("a(" & i & "," & j & ") = " & a(i,j)) ‘Вывод измененного массива на экран

Next j

Next i

End Sub

Function sred_stolb(massiv, j)

… ‘См. пример 20.

End Function

Sub obmen_stolbcov(massiv, k1, k2)

… ‘См. пример 19.

End Sub

Здесь переменной max_sred сначала присваивается очень большое отрицательное число. Затем в этой переменной сохраняется максимальное из вычисленных средних значений по столбцам. С этой целью перебираются все столбцы, по каждому столбцу вычисляется среднее (с помощью функции sred_stolb), и оно сравнивается с текущим значением переменной max_sred. Если выполняется условие s > max_sred (т.е. найденное среднее превышает текущее значение переменной max_sred), то значение среднего сохраняется в переменной max_sred, а номер столбца, где найдено это среднее – в переменной jmax. В результате в переменной jmax сохраняется номер столбца с максимальным средним. В подпрограмме obmen_stolbcov столбцы с номерами 1 и jmax меняются местами.

Область видимости процедур

В начале заголовка процедуры, т.е. перед словом Sub или Function, может указываться слово Private или Public, задающее область видимости процедуры:

- Private: процедура может вызываться только из процедур того модуля, в котором она находится;

- Public: процедура может вызываться из процедур как того модуля, в котором она находится, так и других модулей.

Если область видимости не указана, то по умолчанию предполагается видимость процедуры во всех модулях (т.е. область видимости, соответствующая слову Public). Если программа состоит только из одного модуля, то область видимости процедур этой программы никак не влияет на ее работу.

Варианты заданий

Примечания:

1 Варианты 1-7 – простые, остальные – более сложные.

2 Предполагается, что для решения задач из вариантов 15-21 будет использоваться (наряду с другими конструкциями VBA) оператор цикла DO WHILE.

3 При выполнении данной работы рекомендуется выполнить три задания: по одному из вариантов 1-7, 8-14, 15-21.

Вариант 1 – Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; вывод на экран номеров строк массива, где число x встречается хотя бы один раз.

Вариант 2 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; ввод некоторого целого числа i; замена всех чисел в i-й строке, превышающих введенное число x, на это число x (например, если введено x=5, i=2, то требуется во второй строке массива заменить на 5 все числа, превышающие 5); вывод измененного массива на экран.

Вариант 3 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; вычисление суммы каждой строки массива; вывод на экран номеров тех строк, суммы которых превышают x.

Вариант 4 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству столбцов в массиве a); ввод некоторого целого числа i; сравнение каждого элемента i-й строки массива a с соответствующим элементом массива b и подсчет количества случаев, когда элемент массива a превышал соответствующий элемент массива b; вывод подсчитанного количества случаев на экран.

Вариант 5 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; для каждого столбца массива – подсчет и вывод на экран количества вхождений числа x.

Вариант 6 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству столбцов в массиве a); в каждой строке массива a – замена всех элементов, превышающих соответствующий элемент массива b, на этот элемент массива b; вывод измененного массива a на экран.

Вариант 7 – Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству строк в массиве a); ввод некоторого числа j; сложение каждого элемента j-го столбца массива a с соответствующим элементом массива b; вывод на экран измененного массива a.

Вариант 8 – В программе вводятся два двумерных массива (a и b) одинаковой размерности. Сравниваются суммы соответствующих строк массивов: сумма первой строки массива a – с суммой первой строки массива b, сумма второй строки a – с суммой второй строки b, и т.д. Если сумма строки массива a оказывается меньше суммы соответствующей строки массива b, то строки меняются местами (т.е. строка в массиве a заменяется на соответствующую строку из массива b, и наоборот). Обмен строками должен быть реализован в виде отдельной процедуры.

Вариант 9 – В программе вводятся два массива: двумерный (обозначим его как a) и одномерный (b), причем количество элементов в одномерном массиве должно быть равно количеству строк в двумерном массиве. Для каждого элемента массива b определяется ближайший к нему элемент в соответствующей строке массива a (т.е. элемент, разность с которым минимальна). Поиск ближайшего элемента должен быть реализован в виде отдельной процедуры. Из номеров этих ближайших элементов составляется одномерный массив.

Вариант 10 – В программе вводится двумерный массив. Из него должен составляться новый массив, включающий все строки исходного массива, кроме тех, которые состоят из одинаковых чисел. Проверка строк (чтобы выяснить, состоит ли данная строка из одинаковых чисел) должна быть реализована в виде отдельной процедуры.

Вариант 11 – В программе вводится двумерный массив. В каждой строке определяется максимальное и минимальное число, и вычисляется их разность. Строка, где эта разность максимальна, должна меняться местами со строкой, где разность минимальна. Определение минимального и максимального значения в строке должно быть реализовано в виде отдельной процедуры.

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

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

Вариант 14 – В программе вводятся два двумерных массива (a и b). Количество строк в этих массивах должно быть одинаковым. Сравниваются суммы соответствующих строк массивов: сумма первой строки массива a – с суммой первой строки массива b, сумма второй строки a – с суммой второй строки b, и т.д. Составляется новый массив из двух строк. В первой строке нового массива содержатся номера тех строк исходных массивов, где сумма строки массива a оказалась больше суммы соответствующей строки массива b. Во второй строке нового массива содержатся номера всех остальных строк (т.е. тех, где сумма строки массива a не превысила сумму строки массива b). Суммирование строки массива должно быть реализовано в виде отдельной процедуры.

Вариант 15 – В программе вычисляется значение функции sh x (гиперболический синус) на основе ее представления в виде ряда Тейлора: Цикл ПОКА. Оператор Do While - student2.ru . Значение переменной x, а также требуемая точность вводятся с клавиатуры. Вычисление ряда Тейлора должно быть реализовано в виде функции (вызывающая процедура должна содержать только ввод исходных данных, вызов функции и вывод результата).

Вариант 16 – В программе вводится квадратная матрица (обозначим ее как a) и некоторое число s. Элемент матрицы a(1,1) сравнивается с числом s. Если a(1,1) > s, то программа завершает работу. В противном случае вычисляется сумма элементов квадратной матрицы 2x2 из левого верхнего угла матрицы a. Если эта сумма снова оказывается меньше s, то вычисляется сумма матрицы 3x3, и т.д., пока не будет достигнута сумма, превышающая s. Вычисление суммы квадратной матрицы, выделенной из исходной матрицы a, должно быть реализовано в виде функции. Программа должна выводить на экран размерность квадратной матрицы, сумма которой превысила s. Если число s не превышено при суммировании всей матрицы a, то должно выводиться сообщение об ошибке.

Вариант 17 – В программе вводится одномерный массив a, состоящий из целых чисел, не превышающих 100. Вводятся также два числа: g (вводится значение 100) и k (некоторое произвольное целое число). В программе подсчитывается количество элементов массива a, превышающих величину g. Если это количество составляет не меньше k, то программа завершает работу; при этом из чисел, превышающих g, составляется новый массив. В противном случае величина g уменьшается на 0,5, и проверка повторяется. Подсчет количества элементов массива, превышающих заданную границу g, должен быть реализован в виде функции.

Вариант 18 – В программе вводится одномерный массив a и некоторое число s. Вычисляется среднее значение элементов массива. Если среднее значение превышает s, то программа завершает работу; при этом из ненулевых элементов массива a составляется новый массив. В противном случае в массиве определяется минимальное число, оно заменяется на ноль, снова вычисляется среднее, и проверка повторяется. Определение минимального элемента массива должно быть реализовано в виде функции.

Вариант 19 – В программе вычисляется интеграл от некоторой функции y = f(x) на отрезке [a, b] на основе метода левых прямоугольников. Для этого отрезок [a, b] разбивается на k участков одинаковой длины d=(b-a)/k, т.е. определяются точки x0 = a, x1 = a+d, x2=a+2d, …, xk-1 = a+(k-1)d. Вычисляются значения функции y в этих точках: y0 = f(x0), y1 = f(x1), …, yk-1 = f(xk-1). Оценка интеграла вычисляется как (y0+y1+…+yk-1)·d. Затем k увеличивается на единицу, и вычисление повторяется. Процесс завершается, когда разность оценок интеграла при двух последовательных значениях k оказывается меньше заданной точности. Требуется разработать программу для вычисления интеграла от функции Цикл ПОКА. Оператор Do While - student2.ru этим методом. В программе должны запрашиваться границы отрезка (a и b), а также требуемая точность. Начальное значение k задается в программе (например, k=2). Непосредственно алгоритм вычисления интеграла должен быть реализован в виде функции.

Вариант 20 – В программе определяется решение некоторого уравнения f(x) = 0 на отрезке [a, b] методом дихотомии. Для применения этого метода необходимо выбрать точки a и b таким образом, чтобы величины f(a) и f(b) имели разные знаки. Определяется середина этого отрезка c = (b+a)/2, и в этой точке вычисляется значение f(c). Если это значение отличается от нуля на величину, не превышающую заданной точности, то задача решена (c – решение). В противном случае отрезок [a, b] разбивается пополам. Выбирается тот из двух полученных отрезков, на концах которого исследуемая функция f(x) принимает разные знаки, и для этого отрезка процесс повторяется. Требуется разработать программу для решения уравнения sin x / x = 0 этим методом. В программе должны запрашиваться границы отрезка (a и b), а также требуемая точность. Непосредственно алгоритм решения уравнения должен быть реализован в виде функции.

Вариант 21 – В программе вводятся два одномерных массива (обозначим их как a и b), состоящих из положительных чисел, причем известно, что сумма массива a меньше суммы массива b (если это не так, то должно выводиться сообщение об ошибке). Составляется новый одномерный массив c. Сначала в него включаются все элементы массива a; затем к нему добавляются элементы массива b, начиная с b(1), до тех пор, пока сумма массива a не превысит сумму оставшихся элементов массива b. Суммирование элементов массива должно быть реализовано в виде функции. На экран выводится полученный массив c.

ЛАБОРАТОРНАЯ РАБОТА №5

ОПЕРАЦИИ С ЯЧЕЙКАМИ И РАБОЧИМИ ЛИСТАМИ
MS EXCEL В ПРОГРАММАХ НА VBA

Цель работы –Освоение разработки программ на VBA для обработки данных, размещенных в рабочих листах табличного процессора MS Excel.

Наши рекомендации