Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB.doc
Скачиваний:
23
Добавлен:
12.11.2018
Размер:
2.66 Mб
Скачать
    1. Типовые задачи на обработку одномерных массивов

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

Пример. Задать размер n линейного массива A, заполнить его случайными целыми числами в диапазоне от –10 до 10. Массив вывести в текстовое окно и определить:

  • сумму всех элементов массива;

  • количество положительных элементов массива;

  • наименьший элемент массива;

  • среднее арифметическое элементов массива кратных пяти.

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

Для поиска минимального элемента в массиве вначале устанавливается текущий минимум по нулевому элементу массива min:=A[0]. Затем начинается просмотр элементов массива: выбирается очередной элемент A[i] и сравнивается с min. Если элемент M[i] меньше текущего min, то выполняется переприсваивание min:=A[i].

Option Explicit 'Установка режима, при котором запрещается использовать

'необъявленные переменные

Dim a() As Integer 'Описание динамического массива целых чисел

Dim n As Integer

'Процедура заполнения массива случайными числами и вывод массива в текстовое окно

Private Sub Command1_Click()

Dim i As Integer

Randomize

n = Val(Text1.Text) 'Количество элементов массива

ReDim a(n) 'Задание размера динамического массива А

Text2.Text = "" 'Очистка окна Text2

'Заполнение массива случайными значениями целых чисел

For i = 0 To n - 1

'Присвоение элементу массива случайного числа из отрезка [-10,10]

a(i) = Int(21 * Rnd - 10)

'Вывод элементов массива в текстовое поле Text2

Text2.Text = Text2.Text + " " + Str(a(i))

Next i

End Sub

'Процедура обработки массива

Private Sub Command2_Click()

Dim i As Integer, Sum As Integer, Min As Integer

Dim Sum1 As Integer, Kol As Integer, Count_P As Integer

Min = a(0) 'Установка начального значения минимума

'Очистка текстовых окон

Text3.Text = "": Text4.Text = "": Text5.Text = ""

Text6.Text = ""

Sum=0: Sum1=0: Kol=0: Count_P=0 'Инициализация переменных

For i = 0 To n - 1

Sum = Sum + a(i) 'Суммирование элементов массива

'Подсчет количества положительных элементов

If a(i) > 0 Then Count_P = Count_P + 1

If a(i) < Min Then Min = a(i) 'Поиск минимального элемента

If (a(i) Mod 5 = 0) And (a(i) <> 0) Then

Sum1 = Sum1 + a(i) 'Суммирование элементов кратных пяти

Kol = Kol + 1 'Подсчет количества элементов кратных пяти

End If

Next i

Text3.Text = Str(Sum)

Text4.Text = Str(Count_P)

Text5.Text = Str(Min)

If Kol <> 0 Then Text6.Text = Str(Sum1 / Kol)

End Sub

        1. Формирование массива с помощью функции Split

Число элементов массива и сам массив можно задать в текстовых окнах. В качестве разделителя значений элементов массива можно использовать любой символ, например, пробел. В VB имеется функция Split, которая позволяет, указав разделитель, ввести из текстового поля все элементы массива сразу. Эта функция разделит строку по указанному разделителю на массив подстрок. Подстрок будет столько, сколько было введено элементов. Массив полученных подстрок индексируется с нуля!

В приведенном ниже примере поиска максимального значения в массиве для ввода данных используются два элемента управления TextBox. Первый – для указания количества элементов массива. Второй – для ввода строки, состоящей из элементов массива разделенных пробелом. Функция Split делит строку Text2 по пробелу на массив подстрок. После этого в цикле заполняются элементы массива. Результаты расчета выводятся на графическое окно PictureBox.

Option Base 1

Dim a(30) As Single

Dim av As String

Private Sub Command1_Click()

n = Val(Text1.Text) 'Ввод количества элементов массива

av = Split(Text2.Text, " ") 'Ввод строки, состоящей из n значений

'элементов массива в переменную av

For i = 1 To n

a(i) = Val(av(i - 1)) 'Заполнение массива

Next i

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