Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика Никитин

.pdf
Скачиваний:
8
Добавлен:
29.03.2016
Размер:
398.65 Кб
Скачать

41

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