Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рабочая тетрадь VB.doc
Скачиваний:
4
Добавлен:
08.09.2019
Размер:
379.9 Кб
Скачать

Массивы

Массивы предназначены для моделирования объектов одного и того же типа. Каждый массив имеет имя и каждый элемент массива отличается уникальным порядковым номером (индекс). Поэтому массивы часто называют индексированными переменными.

Пример 1.

Заполним массив случайными числами в заданном интервале (от А до В) по формуле: x=int(a+(b-a)*rnd).

Определим процедуру для нахождения максимального и минимального элемента массива.

В целях визуального контроля предусмотреть вывод массива в текстовое поле.

Пример 2.

Сортировка массива по возрастанию методом перестановок.

Dim i, k, l, mas(1 To 10) As Byte

D im min, max As Integer

Dim w, j As Integer

Private Sub Command1_Click()

Call заполнение

End Sub

Private Static Sub заполнение()

Randomize

For i = 1 To 10

mas(i) = Int(Rnd * 10)

Text1.Text = Text1.Text + Str(mas(i))

Next i

End Sub

Private Sub Command2_Click()

Text1.Text = ""

Text2.Text = ""

End Sub

Private Static Sub minel(i, k)

min = mas(i): k = i

F

Идея алгоритма состоит в последовательном поиске минимальных элементов и их перемещению к началу массива с помощью перестановок с элементами, имеющими меньший индекс.

Процесс перестановок можно сделать наглядным , если в текстовом поле выводить состояние массива на каждом шаге сортировки.

or j = i + 1 To 10

If mas(j) < min Then min = mas(j): k = j

Next

End Sub

Private Sub Command3_Click()

Text2.Text = ""

For i = 1 To 9

Call minel(i, k)

w = mas(k): mas(k) = mas(i): mas(i) = w

For l = 1 To 10

Text2.Text = Text2.Text + Str(mas(l))

Next l

Next i

End Sub

Решаем задачи

  1. На метеорологической станции в компьютер введены сведения о среднесуточной температуре за март. Требуется составить программу, которая бы оп­ределяла:

    1. количество дней, когда температура была ниже 0°С;

    2. сумму положительных температур;

    3. среднюю температуру месяца;

    4. день, когда температура ближе всего подходила к среднемесячной.

  2. В массиве содержатся сведения о росте N учеников одного класса (данные вводятся в алфавитном порядке фамилий учеников). Определить средний рост учеников, чьи фамилии расположены в журнале между фамилиями учеников с минимальным и максимальным ростом (рост этих учеников тоже учитывать), считая, что самый высокий и самый низкий ученики единственные в классе.

  3. Кот Матроскин и Шарик загадывали четные и нечетные числа в произвольном порядке, пока не кончилось место на печке, где они записывали эти числа. Определить, каких чисел было загадано больше: четных или нечетных, если последним было записано число 0 (при подсчете это число не учитывать)

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

  5. Маленький Мук пробовал печатать в текстовом редакторе. Определить, сколько различных символов он напечатал на экране, а также литеру, напечатанную максимальное число раз. Вывести на экран полученный результат.

  6. Поросята Фунтик и Хрюша решили сравнить свои книжки "по толщине". Они составили список, указывая вместе с названиями число страниц в каждой книге. Попутно выяснилось, что все книжки имели различное количество страниц, некоторые книги были как в библиотеке Фунтика, так и в библиотеке у Хрюши. Помоги Фунтику найти самую "толстую" его книжку среди тех, которых нет у Хрюши (книжки сравнивать по числу страниц).

  7. У двух спортсменов были гири для тренировок, на каждой был указан ее вес. Каждый раз после очередного занятия они составляли их по возрастанию весов гирь. Потом решили объединить свои гири, сохраняя привычное расположение гирь. Требуется помощь в расстановке (известен вес каждой гири в "исходных наборах). Напечатать порядок гирь в исходных наборах и в полученном. Задача может быть решена двумя способами.

  1. Научить компьютер распознавать среди введенных N целых чисел степени двойки (например, 1,2, 4, 8, 16 и т.д.).

  2. На пронумерованных N стульях за круглым столом в зале заседаний сидели толстяки, вес каждого был известен. Каждый час они пересаживались по кругу вправо на один стул. Определить, какой из толстяков будет сидеть на каждом стуле через R часов. Вывести исходный и полученный массивы. Организацию циклического сдвига вправо на R позиций можно сделать двумя различными способами: R раз сдвигать массив на одну позицию или сразу определить, где будет сидеть каждый толстяк через R часов.

  3. На пронумерованных дискетах записано различное количество файлов, и только две дискеты имеют одинаковое число файлов. Найти номера этих дискет.

  4. На N мячиках в магазине игрушек были написаны различные английские и русские буквы и цифры. Для детского сада нужно отобрать те мячики, на которых написаны цифры и русские буквы, причем в детском саду одинаковых мячей быть не должно. Полученный набор напечатать.

  5. Каждый ученик 8-го "Д" класса нашел на археологических раскопках по одной глиняной табличке с зашифрованными на них числами (на каждой табличке по два числа). Когда удалось расшифровать эти числа, то оказалось, что на некоторых табличках сумма двух чисел является простым числом, а на остальных — составным. Определить, сколько табличек было с составными числами.

Проект «Вечный календарь»

Постановка задачи

Разработайте программу, представляющую собой вечный календарь (она должна показывать календарь для любого месяца с 1901 по 2099 год).

Предлагаю дизайн формы:

Пояснения:

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

  2. Удобно печатать, используя функцию Tab. Например, в результате выполнения оператора Print Tab(5);”имя”; Tab(15);”адрес”, имя напечатается с 5 позиции, а адрес – с 15-ой.

  3. Печатать пробелы лучше всего с помощью функции Spc.

  4. Чтобы числа месяца стояли точно под названием дня недели, воспользуйтесь функцией формат. Чтобы убедиться, что число займет три позиции независимо от того, состоит оно из одной или из двух цифр задайте Формат ‘@@@’. Таким образом заполняются позиции справа налево, вставляя пробелы вместо отсутствующих цифр.

  5. Стандартная функция WeekDay вычисляет , каким днем недели является заданная дата, и возвращает целое число от 1 до 7 (от воскресенья до субботы – Для англо-язычных календарей). В нашей стране принято считать первым днем недели понедельник, поэтому необходимо из возвращаемого функцией Weekday числа вычесть 1:

День=WeekDay(ПервыйДень) - 1

18