Одномерные и многомерные массивы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Одномерные и многомерные массивы



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

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

Как и другие переменные, переменные типа массив, или индексированные переменные, также необходимо описывать с помощью оператора Dim, при этом надо указать не только тип массива, но и его размер. Массив с заданным размером называется массивом фиксированной длины (статический массив), массив с переменным размером называется динамическим массивом. После имени массива в круглых скобках должен быть указан диапазон изменения индекса — верхняя и нижняя граница. Если не указана нижняя граница изменения индекса массива, то по умолчанию она равна нулю. Допускаются отрицательные значения индекса.

Примеры объявления статического массива:

Dim A(500) As String

′статический массив строкового типа с номерами индексов от 0 до 500

Dim X(1 To 10) As Integer

′статический массив целого типа с номерами индексов от 1 до 10

 

Динамические массивы (одномерные и многомерные). Иногда при объявлении массива неизвестен его размер. В этом случае следует объявлять динамический массив, что позволяет менять его размер или размерность во время выполнения. Динамический массив создается в два этапа. Сначала массив определяют в секции (General) (Declarations) контейнера (формы, модуля, класса) без указания размера:

(General) (Declarations)

Dim A() as Integer

Затем с помощью оператора ReDim устанавливают фактический размер массива:

 

(General) (Declarations)

Dim A() as Integer

Private Sub Command1_Click()

ReDim A(10)

′ код программы

End Sub

 

Синтаксис оператора ReDim:

 

ReDim [Preserve] Имя_переменной (Границы) [As Тип_данных]

Ключевое слово Preserve, используемое вместе с оператором ReDim, позволяет изменять размер массива без потери его содержимого.

 

Многомерные массивы

Visual Basic позволяет создавать многомерные массивы. При объявлении многомерного массива границы каждой размерности разделяются запятыми:

Dim X(10, 20) As Integer

′описан двумерный массив, содержащий 11 строк и 21 столбец целых чисел

Dim X(1 to 10, 1 to 20) As Integer

′описан двумерный массив, содержащий 10 строк и 20 столбцов целых чисел

 

Указания к выполнению лабораторной работы № 5

Часть 1. Одномерный массив. Расположить на форме командные кнопки «Заполнить массив», «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос 10 элементов массива X. Требуется переписать элементы массива X в массив Y в обратном порядке. Вывести в первую метку элементы исходного массива X, во вторую – элементы результирующего массива Y.

Пример программного кода:

Option Explicit

Dim X(1 To 10) As Integer

Dim Y(1 To 10) As Integer

Dim i As Integer

 

Private Sub Command1_Click()

For i = 1 To 10

X(i) = InputBox("Введите элементы массива")

Label1.Caption = Label1.Caption + CStr(X(i)) + Chr(13)

Next i

End Sub

 

Private Sub Command2_Click()

For i = 1 To 10

Y(i) = X(11 - i)

Label2.Caption = Label2.Caption + CStr(Y(i)) + Chr(13)

Next i

End Sub

Рисунок 20 – Результат выполнения первой части задания

На рисунке 20 приведен пример оформления задания на одномерный массив. Обязательным является вывод на форму исходного массива и результирующего массива.

Часть 2. Двумерный массив. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Требуется для каждой строки матрицы найти сумму элементов, записать ее в массив В. Вывести в первую метку элементы матрицы А, во вторую – элементы результирующего массива В.

Рисунок 21 – Результат выполнения второй части задания.

Варианты заданий для самостоятельной работы

Часть 1. Одномерные массивы

Вариант 1. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наибольший элемент. Из массива X получить массив Y, поделив все элементы массива X на значение наибольшего элемента. Вывести в первую метку элементы исходного массива X, во вторую – элементы полученного массива Y.

Вариант 2. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наибольший элемент. Заменить его значением суммы элементов, предшествующих ему. Вывести в метки элементы исходного и полученного массива.

Вариант 3. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Определить среднее арифметическое элементов массива X, а также значение элемента, ближайшего к среднему и его номер. Вывести эти данные в метку, во вторую метку вывести элементы исходного массива.

Вариант 4. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Сформировать массив Y по правилу: Y(1)=X(1)+X(N), Y(2)=X(2)+X(N -1) и т.д. Вывести элементы исходного массива X и полученного массива Y в метку.

Вариант 5. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наибольший и наименьший элементы, поменять их местами. Вывести в первую метку элементы исходного массива, во вторую – элементы преобразованного массива.

Вариант 6. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наименьший из положительных элементов. Вывести этот элемент в метку, во вторую метку вывести элементы исходного массива.

Вариант 7. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Записать в массив Y элементы массива X, имеющие четные индексы, а в массив Z – элементы массива X, имеющие нечетные индексы. Вывести в первую метку элементы массива Y, во вторую – элементы массива Z.

Вариант 8. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Записать в массив Y индексы нулевых элементов массива X. Вывести в первую метку элементы исходного массива X, во вторую – элементы полученного массива Y. Если нулевых элементов в массиве X нет, то вывести в метку соответствующее сообщение.

Вариант 9. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наибольший элемент и его порядковый номер, если таких элементов несколько, то подсчитать их количество. Вывести этот элемент, его номер (или количество) в метку, во вторую метку вывести элементы исходного массива.

Вариант 10. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Найти в массиве X наибольшее значение модуля разности между соседними элементами. Вывести в метку это значение, во вторую метку вывести исходный массив.

Вариант 11. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Записать в массив Y элементы массива X, отсортированные в порядке возрастания. Вывести элементы исходного массива X и отсортированного массива Y в метки.

Вариант 12. Расположить на форме командные кнопки «Заполнить массив» и «Выполнение проекта» и две метки. Щелчок по кнопке вызывает запрос N элементов массива X. Расположить элементы этого массива в следующем порядке: положительные, равные нулю, отрицательные. Вывести в метки исходный и преобразованный массивы.

Часть 2. Двумерные массивы

Вариант 1. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Требуется в каждой строке матрицы найти наибольший элемент, записать его в массив В. Вывести в первую метку элементы матрицы А, во вторую – элементы результирующего массива В.

Вариант 2. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Найти наименьший элемент матрицы, а также номер строки и столбца, в которых он расположен. Вывести в первую метку элементы матрицы А, во вторую – найденный элемент, номер строки и столбца.

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

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

Вариант 5. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Найти количество положительных, отрицательных, нулевых элементов матрицы, вывести эти значения в метку, во вторую метку вывести элементы исходной матрицы.

Вариант 6. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы. Вывести в метки элементы исходной и преобразованной матриц.

Вариант 7. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Найти в каждой строке матрице наибольший элемент поместить его на место первого элемента строки. Вывести в метки элементы исходной и преобразованной матриц.

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

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

Вариант 10. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Поменять местами в матрице А первую и последнюю строки. Вывести в метку элементы исходной и преобразованной матриц.

Вариант 11. Расположить на форме командные кнопки «Ввод исходных данных», «Высчитать» и две метки. Щелчок по кнопке вызывает запрос элементов матрицы А(5х5). Записать в массив В номера строк матрицы А, сумма элементов которых четна. Вывести в первую метку элементы матрицы А, во вторую – элементы массива B.

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



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 360; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.151.106 (0.018 с.)