Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Кузьмины по VB.doc
Скачиваний:
47
Добавлен:
25.05.2014
Размер:
911.36 Кб
Скачать

ОператорErase

В случае массивов с фиксированным размером оператор Eraseпозволяет очищать все элементы массива. Его действие аналогично ***.

В случае динамических массивов оператор Eraseпозволяет полностью массив и его содержимое из оперативной памяти.

Синтаксис Erase a1[, a2, …], т.е. за один раз можно очистить (удалить) несколько массивов.

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

1. Найти максимум в одномерном массиве

Option Base 1

Dim a(10) As Single

Private Sub Command1_Click()

n = Val(Text1.Text)

av = Split(Text2.Text, " ")

For i = 1 To n

a(i) = val(av(i - 1))

Next

Max = a(1)

k = 1

For i = 1 To n

If a(i) > Max Then

Max = a(i)

k = i

End If

Next i

Picture1.Print "Максимальный элемент "; Max

Picture1.Print "Его номер "; k

End Sub

Для ввода были использованы два элемента управления TextBox. Первый - для указания числа элементов, из которых состоит массив. Во втором – вводится строка, состоящая из элементов массива разделенных пробелом.

Функция Splitразделит строкуText2по указанному разделителю (пробелу) на массив подстрок. Подстрок будет столько, сколько было введено элементов. Массив подстрок индексируется с нуля!

И только после этого цикл определит элементы массива.

2. Сортировка методом пузырька

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

Вывод массива осуществляется в PictureBoxв столбик.

Const n = 10

Dim a(1 To n) As Byte

Private Sub Command1_Click()

Randomize

For i = 1 To n

a(i) = Int(Rnd * 40)

Picture1.Print a(i)

Next i

End Sub

Private Sub Command2_Click()

Dim r As Byte

For i = 1 To n

For j = 1 To n - 1

If a(j) > a(j + 1) Then

r = a(j)

a(j) = a(j + 1)

a(j + 1) = r

End If

Next j

Next i

For i = 1 To n

Picture2.Print a(i)

Next i

End Sub

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

Для обработки двумерных массивов чаще всего используют два вложенных друг в друга цикла For…Next, каждый из которых позволяет перебирать элементы в массиве по соответствующему индексу строки или столбца.

3. Вычислить произведение положительных элементов матрицы

Dim a(50,50) As Single

Private sub command1_click()

n=val(text1.text)

m=val(text2.text)

P=1

For i=0 to n-1

For j=0 to m-1

Txt=”задайте элемент из строки ” & str(i+1) & “ и столбца “ & str(j+1)

A(i,j)=val(inputbox(txt))

Picture1.Print Format (a(i,j), “##.#”);

If a(i,j)>0 then p=p*a(i,j)

Next j

Picture1.print

Next i

Picture1.Print “Произведение положительных”; p

End sub

В текстовых окнах задается количество строк и столбцов массива, элементы массива задаются по одному в окне InputBox, массив и результат печатаются в графическое окно:

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

4. Транспонирование матрицы (перемены местами строк и столбцов)

Dim a(1 To 2, 1 To 3), b(1 To 3, 1 To 2) As Single

Dim i As Integer, j As Integer

For i = 1 To 2

For j = 1 To 3

a(i, j) = Rnd * 10 + 1

b(j, i) = a(i, j)

Next j

Next i

For i = 1 To 3

For j = 1 To 2

Print b(i, j);

Next j

Print

Next i