Информатика Никитин
.pdf41
2.Из двух массивов a(11) и b(14) получить новый массив c , состоящий из отрицательных элементов исходных массивов. Полученный массив расположить в порядке убывания.
3.Из двух массивов a(10) и b(16) получить новый массив c , состоящий из элементов исходных массивов, которые больше или равны -1,87.
Полученный массив расположить в порядке возрастания.
4.Из двух массивов a(13) и b(8) получить новый массив c , состоящий из
элементов исходных массивов, которые по модулю больше 2,37.
Полученный массив расположить в порядке убывания.
5.Из двух массивов a(11) и b(16) получить новый массив c , состоящий из элементов исходных массивов, которые по модулю меньше или равны 4,33.
Полученный массив расположить в порядке возрастания.
6.Из двух массивов a(12) и b(9) получить новый массив c , состоящий из модулей отрицательных элементов исходных массивов. Полученный массив расположить в порядке убывания.
7.Из двух массивов a(7) и b(16) получить новый массив c , состоящий из квадратов положительных элементов исходных массивов. Полученный массив расположить в порядке возрастания.
8.Из двух массивов a(9) и b(16) получить новый массив c , состоящий из логарифмов элементов исходных массивов, которые больше или равны 1,7.
Полученный массив расположить в порядке убывания.
9.Из двух массивов a(13) и b(10) получить новый массив c , состоящий из
квадратных корней неотрицательных элементов исходных массивов.
Полученный массив расположить в порядке возрастания.
10.Из двух массивов a(8) и b(17) получить новый массив c , состоящий из синусов элементов исходных массивов, которые меньше или равны нулю.
Полученный массив расположить в порядке убывания.
42
|
Задача 4 |
|
|
1. |
Для матрицы |
A 10 , 5 |
найти сумму элементов, которые меньше 2,33. |
2. |
Для матрицы |
A 8 , 6 |
найти произведение элементов, которые лежат в |
|
(1,1; 4,8). |
|
|
3. |
Для матрицы |
A 10 , 4 найти среднее арифметическое ее элементов. |
|
4. |
Для матрицы |
A 8 , 4 |
найти сумму ее элементов, лежащих на нечетных |
|
столбцах. |
|
|
5. |
Для матрицы |
A 10 , 6 |
найти сумму абсолютных величин ее элементов, |
|
лежащих на четных строках. |
||
6. |
Для матрицы |
A 12 , 5 |
найти сумму ее элементов, для которых i + j ≤ 9 . |
7.Для матрицы A 8 , 7 найти сумму абсолютных величин ее отрицательных элементов.
8.Для матрицы A 7 , 8 найти число отрицательных элементов.
9.Для матрицы A 10 , 7 найти число ее элементов, принадлежащих [−1; 2,3] .
10.Для матрицы A 9 , 5 найти среднее арифметическое ее положительных
элементов.
Задача 5
1.Получить вектор b , координаты которого равны суммам элементов соответствующих строк матрицы A 9 , 5 .
2.Получить вектор b , координаты которого равны суммам положительных элементов соответствующих колонок матрицы A 7 ,12 .
3.Получить вектор b , координаты которого равны произведению отрицательных элементов соответствующих строк матрицы A 5 , 12 .
43
4.Получить вектор b , координаты которого равны среднему арифметическому элементов соответствующих колонок матрицы A 10 , 9 .
5.Получить вектор b , координаты которого равны произведению
элементов соответствующих строк матрицы A 9 , 10 , удовлетворяющих
условию: ai , j ³ 1,67 .
6.Получить вектор b , координаты которого равны суммам абсолютных величин отрицательных элементов соответствующих колонок матрицы
|
A 10 , 9 . |
|
|
|
|
|
|
|
|
|
|
7. |
Получить вектор |
|
, координаты которого равны суммам логарифмов |
||||||||
b |
|||||||||||
|
элементов соответствующих строк матрицы |
A 8 , 12 , удовлетворяющих |
|||||||||
|
условию: |
a i , j ³ 1,37 . |
|
|
|
|
|||||
8. |
|
|
|
|
|
|
|
, координаты которого равны произведению |
|||
Получить |
|
вектор |
b |
||||||||
|
элементов соответствующих колонок матрицы |
A 7 , 13 , удовлетворяющих |
|||||||||
|
условию: |
|
a i , j |
|
> 1,3 . |
|
|
|
|
||
|
|
|
|
|
|
|
9.Получить вектор b , координаты которого равны среднему геометрическому положительных элементов соответствующих строк
матрицы A 14 , 7 .
10.Получить вектор b , координаты которого равны среднему геомет-
рическому модулей отрицательных элементов соответствующих колонок матрицы A 8 , 10 .
Задача 6
1.Из матрицы А получить матрицу В , элементы которой состоят из абсолютных величин соответствующих элементов матрицы А.
2.Из матрицы А получить матрицу В , элементы которой состоят из косинусов соответствующих элементов матрицы А.
44
3.Из матрицы А получить транспонированную матрицу B = AT .
4.Из матрицы А получить матрицу В , элементы которой состоят из квадратов соответствующих элементов матрицы А.
5.Из матрицы А получить матрицу В , элементы которой состоят из синусов соответствующих элементов матрицы А.
6.Из матрицы А получить матрицу В , элементы которой состоят из соответствующих элементов матрицы А, умноженных на 1,5 .
7.Из матрицы А получить матрицу В , элементы которой вычисляются по формуле: b i , j = ln (1 + a 2i , j ) .
8.Из матрицы А получить матрицу В , элементы которой вычисляются по формуле: b i , j = 1,2 a i , j .
9.Из матрицы А получить матрицу В , элементы которой состоят из арктангенсов соответствующих элементов матрицы А.
10.Из матрицы А получить матрицу В , элементы которой в два раза
меньше соответствующих элементов матрицы А.
Замечания к задаче 6
1.Размерность и числовые значения элементов матрицы А взять из задачи 5.
2.Задачи 5 и 6 можно объединить в одной программе.
Образец выполнения контрольной работы № 2
Задача 1
Составить программу табулирования функций
|
12x |
2 |
- 3,6 , |
x < 0,77 ; |
|
y = |
|
z = arctg xy |
|||
ln 3x , |
x ³ 0,77 |
|
|
|
|
45 |
для x от -0,5 до 1,5 с шагом 0,1 . |
Счет функции |
y = y(x) оформить в |
|
виде процедуры, а счет |
z = z(x; y) |
оформить в |
виде подпрограммы- |
функции. Использовать цикл Do – Loop Until .
Предположим, что результаты счета будем выводить в Excel – таблицу
в следующем виде: заголовок таблицы-символы |
x , y и z – разместим |
соответственно в ячейках A1 , С1 , E1 , |
а результаты счета будем |
помещать в соответствующие колонки, начиная с третьей строки.
Тогда рассматриваемую задачу можно представить в виде
Private Sub Workbook_Open() Const a = -0.5, b = 1.5, h = 0.1 Dim x As Single
Dim y As Single
Dim z As Single
Dim i As Integer Range("A1").Value = "x" Range("C1").Value = "y" Range("E1").Value = "z" x = a
i = 3 Do
Call f(x, y) z = g(x, y)
Cells(i, 1).Value = x
Cells(i, 3).Value = y
Cells(i, 5).Value = z x = x + h
i = i + 1
Loop Until x > b + h / 2 End Sub
Public Sub f(ByVal x As Single, _ ByRef y As Single)
If x < 0.77 Then
y = 12 * x ^ 2 - 3.6 Else
y = Log(3 * x) End If
End Sub
46
Public Function g(ByVal x, y As Single) As Single g = Atn(x * y)
End Function
Заметим, что при наборе в редакторе VBA текста программ,
подпрограммы желательно отделять друг от друга пустой строкой. При этом,
программа легче читается на распечатках. Отметим, что в окне редактора подпрограммы будут разделены серой линией.
При запуске программ, имеющих подпрограммы, курсор должен
находиться в основной программе.
Результаты счета предложенной программы имеют вид:
x |
|
y |
|
Z |
|
|
|
|
|
-0,5 |
|
-0,6 |
|
0,291457 |
-0,4 |
|
-1,68 |
|
0,591686 |
-0,3 |
|
-2,52 |
|
0,64733 |
-0,2 |
|
-3,12 |
|
0,55788 |
-0,1 |
|
-3,48 |
|
0,334892 |
-1,6E-08 |
|
-3,6 |
|
5,9E-08 |
0,1 |
|
-3,48 |
|
-0,33489 |
0,2 |
|
-3,12 |
|
-0,55788 |
0,3 |
|
-2,52 |
|
-0,64733 |
0,4 |
|
-1,68 |
|
-0,59169 |
0,5 |
|
-0,6 |
|
-0,29146 |
0,6 |
|
0,719999 |
|
0,407784 |
0,7 |
|
2,28 |
|
1,011071 |
0,8 |
|
0,875469 |
|
0,610978 |
0,9 |
|
0,993252 |
|
0,72945 |
1 |
|
1,098612 |
|
0,832353 |
1,1 |
|
1,193923 |
|
0,920019 |
1,2 |
|
1,280934 |
|
0,994023 |
1,3 |
|
1,360977 |
|
1,056354 |
1,4 |
|
1,435085 |
|
1,108966 |
1,5 |
|
1,504077 |
|
1,153579 |
Студентам следует обратить внимание на то, что при табулировании функций одно из промежуточных значений вычислено не при x = 0 , а
при x = −1,6E − 08 , что соответствует x = -1,6 ×10−8 = -0,000000016 . Эта
47
величина с достаточно высокой степенью точности близка к нулю.
Полученный результат связан с тем, что шаг табулирования h = 0,1 оказался переведенным в машинный двоичный код с недостатком.
Задача 2
Даны векторы a R13 и b R14 . Для каждого из векторов найти
среднее арифметическое его координат. Будем считать, что предлагаемая
программа может |
|
использовать векторы длиною n ≤ 50 . |
Обозначим |
|||||||
|
|
|
через массив a , элементы вектора |
|
через массив b, |
|||||
элементы вектора |
|
|
b |
|||||||
a |
||||||||||
а среднее арифметическое координат соответствующих векторов через |
|
sa и |
||||||||
sb. Предположим, |
|
|
|
|
||||||
что исходные данные координат векторов |
|
и |
|
b |
мы |
|||||
a |
расположили в таблице Excel по пять элементов в строке следующим образом:
Предположим, что результаты счета мы будем выводить в ячейки
G3-H3 и G10-H10. Воспользуемся “ стандартной” процедурой ввода векторов. Тогда программа может иметь вид:
Private Sub Workbook_Open()
48
Const n = 50, na = 13, nb = 14
Dim a(1 To n) As Single
Dim b(1 To n) As Single
Dim sa As Single
Dim sb As Single
Call wwodvec(3, 1, 5, na, a())
Call wwodvec(10, 1, 5, nb, b())
Call aa(na, sa, a())
Call aa(nb, sb, b())
Range("G3").Value = "sa="
Range("G10").Value = "sb="
Range("h3").Value = sa
Range("h10").Value = sb
End Sub
Public Sub wwodvec(ByVal i0, j0, k0, n As Integer, _ ByRef X() As Single)
Dim i1, j1, i As Integer i1 = i0
j1 = j0
For i = 1 To n
X(i) = Cells(i1, j1).Value If i Mod k0 = 0 Then
i1 = i1 + 1
j1 = j0 Else
j1 = j1 + 1 End If Next i
End Sub
Public Sub aa(ByVal n As Integer, _ ByRef w, X() As Single)
Dim i As Integer
Dim s As Single s = 0
For i = 1 To n
s = s + X(i) Next i
w = s / n End Sub
Отметим, что в процедуре ввода вектора wwodvec параметры i0 и
j0 указывают номер строки и столбца, начиная с которых вводится первый
49
элемент вектора. Параметр k0 означает, сколько элементов вводимого вектора записывалось в одну строку Excel – таблицы. Если записывать по 10
элементов вектора a в строку, то обращение к этой процедуре должно быть
Call wwodvec(3, 1, 10, na, a())
Результат счета по предложенной программе представляется в виде:
Задача 3 |
|
|
|
Из двух массивов |
a (12) и b (10) получить новый массив, состоящий |
||
из логарифмов всех |
элементов |
исходных массивов больших |
1,3. |
Полученный массив расположить в |
порядке возрастания его элементов. |
|
Будем считать, что предлагаемая программа может использовать исходные массивы длиною до 30 элементов. Тогда новый массив может содержать до 60 элементов. Предположим, что исходные данные элементов массивов a и в расположили в таблице Excel по пять элементов в строке следующим образом:
50
Результаты счета – наименование массива c и значение его элементов будем выводить, начиная с ячейки А15 (15-я строка и 1-я колонка).
Элементы этого массива будем выдавать по пять элементов в строке. Тогда,
используя “ стандартные” процедуры ввода векторов, вывода векторов и сортировки элементов вектора в порядке возрастания (убывания), можно представить программу в следующем виде:
Private Sub Workbook_Open() Const n = 60, na = 12, nb = 10 Dim a(1 To n) As Single
Dim b(1 To n) As Single Dim c(1 To n) As Single Dim nc As Integer
Call wwodvec(3, 1, 5, na, a()) Call wwodvec(10, 1, 5, nb, b()) Call aa(na, nb, nc, a(), b(), c()) Call sort(nc, c())
Call wywodvec(15, 1, 5, nc, "Массив с", c()) End Sub
Public Sub wwodvec(ByVal i0, j0, k0, n As Integer, _ ByRef x() As Single)
Dim i1, j1, i As Integer i1 = i0
j1 = j0