Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка VB_последний.doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
395.78 Кб
Скачать

Работа с одномерным массивом

Ввод одномерного статического и динамического массива может быть осуществлен через окно ввода InputBox:

а)

Объявление статического массива Х из 5 элементов

Dim х ( 5 ) As Single

‘ Ввод статического массива с помощью окна ввода

For i = 1 Тo 5

х ( i ) = Val(InputBox(" х ( i ) =" , "Ввод массива"))

Next I

б)

‘ Объявление динамического массива с незаданной верхней границей

Dim х() As Single

‘ Ввод размера массива через окно ввода

n = Vаl(InputBox("Размер массива (n)","Ввод размера массива"))

‘ Переобъявление динамического массива с верхней границей n

ReDim х ( n ) As Single

‘ Ввод динамического массива Х(n) с помощью окна ввода

For i = 1 Тo n ‘ n – размер массива Х

х ( i ) = Val(InputBox("x ( i ) =" , "Ввод массива"))

Next i

в) Массив может быть заполнен случайными числами. Ниже приведен фрагмент программы для заполнения массива целыми случайными числами в интервале от 1 до 10 и вывода их на экран.

Dim x(10) As Single

For i = 1 To 10

x(i) = Int(Rnd * 10) + 1’ формирование целого случайного числа

Print x(i)

Next i

Для заполнения массива как положительными так и отрицательными случайными числами строка формирования элемента массива должна иметь вид: x(i) = Int(Rnd * 10) + 1- 5

Массив можно выводить на экранную форму. Фрагмент текста программы для вывода одномерного массива на экранную форму может, например, выглядеть так:

а)

Print "Массив Х"

For i = 1 Тo n

Print х ( i ) ‘ выводятся числовые значения элементов массива

Next i

Значения элементов массива будут выведены в столбец.

б)

Print "Массив Х"

For i= 1 Тo n

Print "х ("; i ;") = " ; х ( i ) ‘ вывод с поясняющим текстом

Next i

Пример.

Для целочисленного одномерного массива Х, состоящего из “n” элементов требуется определить среднее арифметическое значение положительных элементов.

Программный код будет иметь вид:

‘ Объявление динамического массива

Dim х() As Single

‘ Ввод размера массива – n

n = Vаl(InрutВох("Размер массива (n)","Ввод размера массива"))

‘ Переобъявление динамического массива

ReDim х ( n ) As Single

‘ Ввод динамического массива Х(n)

For i= 1 Тo n

х ( i ) = Val(InputBox("x ( i ) = " , "Ввод массива"))

Next i

‘ Задание начального значения суммы (S)

‘ и количества (К) положительных элементов массива

S=0

К=0

‘ Накопление суммы и количества положительных элементов

For i = 1 Тo n

If х ( i ) > 0 Then S = S + x ( i ) : К == К + 1

Next i

‘ Проверка наличия положительных элементов для вычисления среднего значения во избежание деления на ноль

If K > 0 Then

SR= S/K

Print " Среднее значение положит. элементов = " ; SR;

Else

Print " Положительных элементов нет "

End If

Двухмерные массивы

Двухмерный массив – это набор однотипных данных, местоположение каждого элемента которого определяется не одним индексом, а двумя. Наиболее распространенным видом двухмерного массива является матрица. Описывается двухмерный массив оператором Dim, после которого в скобках указываются две размерности массива – количество строк и количество столбцов. Для работы с двухмерными массивами необходимо организовывать сложный цикл (цикл с двумя переменными цикла). В сложных циклах используется понятие внешний и внутренний цикл. Двухмерный массив может вводиться, выводиться и обрабатываться как по строкам, так и по столбцам. Для этого внешний цикл может быть организован либо по строке (по i), либо по столбцу (по j). Ввод двухмерного статического и динамического массива может быть также осуществлен через окно ввода InputBox:

а)

‘ Объявление статического двухмерного массива z(3,4)

Dim z ( 3,4 ) As Single

‘ Ввод массива по строкам

For i = 1 Тo 3

For j = 1 Тo 4

z ( i, j ) = Val(InputBox(" z ( i, j ) =" , "Ввод массива"))

Next j

Next i

б)

‘ Объявление массива z(n,m) с незаданной верхней границей

Dim z() As Single

‘ Ввод числа строк и столбцов матрицы

n = Vаl(InputBox("Число строк (n)","Ввод числа строк"))

m = Vаl(InputBox("Число столбцов (m)","Ввод числа столбцов"))

‘ Переобъявление динамического массива

ReDim z ( n,m ) As Single

‘ Ввод динамического массива z(n,m) по строкам

For i = 1 Тo n ‘ внешний цикл

For j = 1 Тo m ‘ внутренний цикл

z ( i, j ) = Val(InputBox("z ( i, j ) =" , "Ввод элементов матрицы"))

Next j

Next I

Двухмерный массив можно выводить на экранную форму. Фрагмент текста программы для вывода матрицы на экранную форму в общепринятом виде (по строкам) может, например, выглядеть так:

а)

Print "Матрица Z"

For i = 1 Тo n

For j = 1 Тo m

Print z ( i, j ), ‘ вывод элементов матрицы по строкам

Next j

Print

Next i

Значения элементов матрицы будут выведены в общепринятом виде (“n” строк и “m” столбцов). Следует обратить внимание, что во внутреннем цикле после оператора PRINT стоит точка с запятой. Это дает возможность отображать массив построчно. Оператор PRINT без параметров (пустой PRINT ), указанный после внутреннего цикла, позволяет после вывода каждой строки элементов матрицы переводить курсор на новую строчку.

Пример.

В матрице z(2,3) определить сумму положительных элементов всех элементов матрицы, а также сумму положительных элементов каждого столбца матрицы. Исходную матрицу вывести на печать в общепринятом виде.

Программный код будет иметь вид:

‘ Объявление двухмерного массива

Dim z(2,3) As Single

‘ Объявление простых переменных

Dim i As Byte, j As Byte, S As Single

‘ Ввод двухмерного массива по строкам

For i = 1 To 2

For j = 1 To 3

z(i,j) = Val(InputBox("z(i,j) ","Матрица"))

Next j

Next i

‘ Вывод двухмерного массива в общепринятом виде (по строкам)

Print "Матрица z"

For i = 1 To 2

For j = 1 To 3

Print z(i,j),

Next j

Print

Next i

‘ Вычисление суммы всех элементов матрицы

‘ Обработка двухмерного массива по строкам

S = 0

For i = 1 To 2

For j = 1 To 3

If z(i,j) > 0 Then S = S + z(i,j)

Next j

Next i

Print "S ="; S

‘ Вычисление суммы положительных элементов каждого столбца

‘ Обработка двухмерного массива по столбцам

For j = 1 To 3

S = 0

For i = 1 To 2

If z(i, j) > 0 Then S = S + z(i, j)

Next i

Print "S ="; S,”для столбца -”; j

Next j