ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.03.2025

Просмотров: 1051

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Randomize

For i = 1 To M

For j = 1 To N

A(i, j) = Int((100 * Rnd) + 1)

Next j

Next i

For i = 1 To M

For j = 1 To N

msgString = msgString & A(i, j) & ", "

Next j

msgString = msgString & Chr(13)

Next i

MsgBox "Массив А:" & Chr(13) & msgString, , _ "Вывод массива (до перестановки)"

For j = 1 To N

Temp = A(2, j)

A(2, j) = A(M - 1, j)

A(M - 1, j) = Temp

Next j

msgString = ""

For i = 1 To M

For j = 1 To N

msgString = msgString & A(i, j) & ", "

Next j

127

msgString = msgString & Chr(13)

Next i

MsgBox "Массив А:" & Chr(13) & msgString, , _

"Вывод массива (после перестановки)"

End Sub

В первом двойном цикле массив А заполняется случайными числами, а во втором двойном цикле происходит формирование переменной msgString, которая содержит массив А() до перестановки строк. Далее в цикле по столбцам происходит перестановка второй и предпоследней строки. Формирование переменной вывода, которая содержит массив после перестановки строк аналогично предыдущему.

Пример 7. Найти в массиве A(M, N) строку, сумма элементов которой является максимальной, а в ней минимальный по величине элемент.

Sub InputArray7()

'**********************************************************

' Заполнить двумерный массив A(M, N), используя датчик случай- 'ных чисел. Найти в этом массиве строку, сумма элементов кото- 'рой является максимальной, а в ней минимальный по величине 'элемент.

'**********************************************************

Dim A() As Integer

Dim msgString As String

msgString = ""

M = InputBox("Число строк", "Размерность массива")

128

N = InputBox("Число столбцов", "Размерность массива")

ReDim A(1 To M, 1 To N)

Randomize

For i = 1 To M

For j = 1 To N

A(i, j) = Int((100 * Rnd) + 1)

Next j

Next i

For i = 1 To M

For j = 1 To N

msgString = msgString & A(i, j) & ", "

Next j

msgString = msgString & Chr(13)

Next i

Max = -10 ^ 9

For i = 1 To M

Min = 10 ^ 9

Sum = 0

SumMax = 0

For j = 1 To N

Sum = Sum + A(i, j)

If A(i, j) < Min Then

Min = A(i, j)

Numj = j

End If

129


Next j

If Sum > Max Then

Max = Sum

Numi = i

Amin = Min

Nmin = Numj

End If

Next i

msgString = msgString & "Максимальная сумма = " & Max & Chr(13)

msgString = msgString & "Номер строки = " & Numi & Chr(13)

msgString = msgString & "Минимальный элемент = " & Amin _ &Chr(13)

msgString = msgString & "Номер столбца = " & Nmin

MsgBox "Массив А:" & Chr(13) & msgString, , "Вывод массива"

End Sub

2. Практическая часть

Задания к лабораторной работе

Для заданных условий составить процедуру и придумать несколько наборов тестовых данных для отладки. Возможно использование, как статических массивов, так и динамических Ввод исходных данных осуществить из файла или с клавиатуры. Предусмотреть вывод результата в файл или на лист рабочей книги Excel.

1.Написать процедуру вычисления суммы всех элементов для заданного двумерного массива А состоящего из 5-ти строк и 6-ти столбцов.

130


2.Написать процедуру вычисления для заданного массива A(5,6) среднего арифметического элементов значения его положительных элементов. Известно, что хотя бы один элемент массива имеет положительное значение

3.Для заданного массива А(4,6) вычислить среднее арифметическое значение положительных элементов каждой строки. Результаты поместить в одномерный массив В(4). Известно, что в каждой строке массива хотя бы один элемент имеет положительное значение.

4.Вычислить для заданного массива В(20,30) наибольший элемент каждого столбца. Результаты поместить в одномерный массив ВМ(30).

5.Написать процедуру поиска для заданного массива А(4,5), строки с наибольшим средним арифметическим значением положительных элементов. Результат поместить в одномерный массив D(5). Считаем, что хотя бы один положительный элемент в каждой строке имеется.

6.Написать процедуру. Для заданного двумерного массива А(6,4), переставить местами 2-ю и 4-ю строки.

7.Написать процедуру. Для заданного массива В(4, 5), переставить местами столбец с наибольшим количеством нулевых элементов и столбец последний по порядку следования в массиве В.

8.Написать процедуру для подсчета в заданном массиве А(5,5) количества элементов превышающих заданное число В и лежащих на главной диагонали и выше нее.

9.Написать процедуру для вывода на печать отрицательных элементов, лежащих на главной диагонали заданного массива А(4, 4).

131

10.Написать процедуру перестановки элементов заданного массива В(4,4), лежащих на главной и побочной главной диагонали.

11.Написать процедуру пересылки двумерного массива А(5,6) в одномерный массив В(30) того же размера, по строкам с сохранением порядка следования элементов.

12.Написать процедуру по транспонированию заданной квадратной матрицы А максимальная размерность которой 100.

13.Написать процедуру перемножения матрицы А на вектор В.

14.Написать процедуру перемножения матрицы A(5,10) на мат-

рицу В(10,4).

15.Задан массив размером N N . Разделить элементы каждого столбца на элемент главной диагонали расположенный в соответствующем столбце.

16.Задан двумерный массив размером N N . Сформировать из его диагональных элементов одномерный массив.

17.Задан массив размером N N . Определить максимальный и минимальный элементы главной диагонали и переставить местами столбцы в которых лежат эти элементы.

18.Просуммировать элементы заданного двумерного массива размером N N , расположенные в его верхней части, ограниченной главной и побочной диагоналями, включая элементы, расположенные на этих диагоналях.

19.Для заданного двумерного массива размером N N просуммировать элементы, расположенные на диагоналях, параллельных главной. Результаты поместить в одномерный массив.

132


20.В заданном двумерном массиве размером N M поменять местами элементы первого и второго столбца, третьего и четвертого и т. д.

21.Задан массив размером 16. Сформировать из него массив размером 4x4 по строкам.

22.В заданном двумерном массиве размером N M переместить нулевые элементы каждого столбца в конец столбца.

23.Задан двумерный массив размером N N . Максимальный элемент каждой строки поменять местами с диагональным элементом соответствующей строки.

24.Поместить в одномерный массив элементы, расположенные

по периметру заданного двумерного массива размером N N . Использовать один цикл.

25.Заданный двумерный массив размером N N повернуть вправо на 90°, без использования вспомогательных массивов.

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

27.

Двумерный массив размером N N задан в виде одномерного

массива по столбцам. Вывести на печать верхний треугольник

массива по строкам, включая элементы главной диагонали.

28

.Написать процедуру, задающую треугольную матрицу произ-

вольного размера. Число, определяющее размер матрицы вво-

дится с клавиатуры во время выполнения процедуры

29

.Сформировать двумерный массив, у которого элементы равны

произведению своих индексов

30

.Найти сумму элементов главной и произведение элементов

побочной диагоналей квадратной матрицы

133


ЛАБОРАТОРНАЯ РАБОТА № 7 Подпрограммы

1.Краткие теоретические сведения

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

ВVBA любая программа написанная программистом является процедурой. Различают два вида процедур:

процедура (Sub),

процедура функция (Function).

Процедура

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

Синтаксис:

[Private | Public] [Static] Sub Имя (СписокФормальныхПараметров)

[Инструкции]

[Exit Sub]

[Инструкции]

End Sub

Элементы описания:

134

Public

Указывает, что процедура Sub

доступна для всех других проце-

дур во всех модулях

Private

Указывает, что процедура Sub

доступна для других процедур

только того модуля, в котором она

описана

Static

Указывает, что локальные пере-

менные процедуры Sub сохраня-

ются в промежутках времени меж-

ду вызовами этой процедуры

Имя

Имя процедуры Sub, удовлетво-

ряющее стандартным правилам

именования переменных

СписокФормальныхПа-

Список переменных, представ-

ляющий аргументы, которые про-

раметров

цедура Sub должна получить,

чтобы их обработать. Имена пере-

менных разделяются запятой

Инструкции

Любая группа инструкций, выпол-

няемых в процедуре Sub

Инструкция Exit Sub

приводит к немедленному выходу из

процедуры Sub.

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

переменная;

константа;

массив; объект.

135