Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End Sub

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)

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

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

Option Base 1 Dima(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

Линейная сортировка массива

Существует множество алгоритмов для сортировки массивов. Рассмотрим два алгоритма: сортировка выбором и метод пузырька.

Cортировка выбором. Суть метода может быть описана так:

1. В последовательности из n элементов выбирается наименьший (наибольший) элемент;

2. Меняется местом с первым;

3. Далее процесс повторяется с оставшимися n -1 элементами, затем с оставшимися n -2 элементами и т.д., до тех пор, пока не останется один самый большой (маленький) элемент.

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

Фрагмент программного кода процедуры сортировки выбором: (нумерация элементов массива начинается с единицы):

For i = 1 To n - 1 'Внешний цикл: перебор элементов массива

Min = a(i): nom = i 'Сортировка по убыванию

For j = i + 1 To n 'Внешний цикл: поиск минимального элемента и

'его позиции в неотсортированной части массива

If (a(j) < Min) Then Min = a(j): nom = j

Next j

tmp = a(i) 'Перестановка элементов ai и anom

a(i) = a(nom)

a(nom) = tmp

Next i

For i = 1 To n

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

Next i

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

Рис. 6 – Сортировка методом пузырька

Фрагмент программного кода сортировки методом пузырька:

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 Ton-1 'Цикл по числу проходов For j = 1 To n – i 'Цикл для сравнения соседних 'элементов в оставшейся части массива If a(j) > a(j + 1) Then'Сравнение соседних элементов r = a(j) a(j) = a(j + 1) 'Перестановка элементов aj и aj+1 a(j + 1) = r End If Nextj Nexti For i = 1 To n Picture2.Print a(i) Next i End Sub

Уплотнение массива

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

Алгоритм удаления элемента из массива состоит в том, что на место удаленного i -го элемента переписывается i +1-ый элемент, на место i +1-го элемента переписывается i +2-ой элемент и т.д.

Пример. Удалить из сформированного массива числа, кратные трем.

Фрагмент программного кода уплотнения массива (нумерация элементов массива начинается с единицы):

i=1 'Инициализация счетчика

'Цикл последовательного перебора имеющихся элементов. Изначально их n штук

Do While i<=n 'Пока i остается <=N тело цикла выполняется

If (a(i) mod 3 <> 0) or (a(i)=0) Then ' Проверка условия

i=i+1 'Увеличение параметра цикла, если элемент не кратен 3




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 449; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.