Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_VB_ч_1_МГУС.doc
Скачиваний:
61
Добавлен:
23.08.2019
Размер:
1.41 Mб
Скачать

Задание № 6. Одномерные массивы

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

Вычислить сумму и произведение четных элементов, а также сумму и произведение отрицательных элементов массива А(n).

Анализ задачи

Анализ постановки задачи показывает, что в алгоритме задачи должны быть элементы циклической и разветвляющейся структур. Исходные данные – размерность массива n и значения элементов массива A(n). Результирующие данные – две суммы и два произведения элементов массива. Обозначим сумму четных элементов sum2, отрицательных как sum_, произведение четных элементов mul2 и произведение отрицательных – mul_.

Алгоритм задачи

Изложим кратко идею алгоритма, используя понятия языка программирования Visual Basic.

После ввода размерности массива n и элементов массива с помощью оператора цикла For … Next просмотрим все элементы массива. С помощью условного оператора If … Then проверяем в цикле, какого знака значение каждого элемента массива – положительного или отрицательного. Если значение элемента положительное, то суммируем положительные элементы и определяем их произведение. Если же значение элементов – отрицательное, то суммируем значения отрицательных элементов и вычисляем их произведение.

После вычисления сумм и произведений выдаем их на форму оператором Print.

Блок-схема алгоритма приведена на рис. 6.1

да

да

Разработка пользовательского интерфейса

Откройте приложение Visual Basic и создайте новый проект, следуя технологии, изложенной в задании № 1. Проект сохраните в своей папке под именем Массив1_СвоиИнициалы.vbp.

Введите Имя (Name) форме frmOdMas и Название (Caption) – Одномерный массив, а затем разработайте интерфейс новой формы.

Интерфейс связан с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.

Введите Имя (Name) форме frmOdMas и Название (Caption) – Одномерный массив, а затем разработайте интерфейс новой формы.

На рис. 6.2 приведен вид формы после разработки интерфейса.

Интерфейс связан с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.

Ввод исходных данных. Ввод размерности массива n проще всего осуществлять с помощью Текстового поля и одной Надписи Введите размерность массива перед этим текстовым полем. Разместите это в верхней части формы. Ввод элементов массива сделайте в 2-х вариантах: ручной ввод (интерактивный) и с помощью функции RND, которая генерирует случайные числа от 0 до 1. Чтобы получить случайные числа Х в заданном диапазоне целых чисел от Мn до Mk используется формула:

Х = Int((RND*(Mk – Mn + 1)) +Mn

Для ввода по этим вариантам разместим на форме две Кнопки с названием Ручной ввод и Случайный ввод.

Блок вычислений. Все вычисления будут запрограммированы в программе (процедуре). Но для начала вычислений необходимо предусмотреть на форме Кнопку с названием Вычислить, которая и будет запускать на выполнение такую процедуру. Еще одну Кнопку с названием Выход необходимо построить на форме для завершения работы с формой. Кнопки разместить справа вверху на форме.

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

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

В табл. 6.1 приведены спланированные элементы управления.

Таблица 6.1

Объект

Свойство

Установленное значение

Label1

Caption

Введите размерность массива:

Text1

Имя

txtN

Text

Пусто (для ввода n)

Command1

Имя

cmdРучнойВвод

Caption

Ручной ввод

Command2

Имя

cmdСлучВвод

Caption

Случайный ввод

Command3

Caption

Вычислить

Имя

cmdEnd

Command4

Caption

Выход

Написание программного кода

Сначала объявляем динамический массив intA() и переменную N в разделе (General) (Declarations), чтобы они были видимы из любой процедуры формы:

Option Explicit

Dim intA() As Integer, N As Integer

Для события Click кнопки cmdРучнойВвод напишите следующий код:

Private Sub cmdРучнойВвод_Click()

'ручной ввод одномерного массива

Dim i As Integer, kvs As Integer

N = Val(Text1.Text)

ReDim intA(N) As Integer

Cls

CurrentY = 1350: CurrentX = 40

FontSize = 8

Print " ИСХОДНЫЕ ДАННЫЕ"

'Print " --------------------------------------"

CurrentY = 1800: CurrentX = 40

kvs = 0

For i = 1 To N

kvs = kvs + 1

intA(i) = Val(InputBox("Введите элемент intA(" & i & _

")", "Ввод массива intA(" & N & ")", , 3700, 4400))

If kvs > 5 Then Print: kvs = 0 ‘ввод в строке по 5 элементов

Print " intA("; i; ")= "; intA(i); " ";

Next i

End Sub

Для события Click кнопки Command2 (Случайный ввод) напишите следующий код:

Private Sub cmdСлучВвод_Click()

'задание массива случайно в диапазоне [-20, 20]

Const Mn As Integer = -20

Const Mk As Integer = 20

Dim i As Integer, kv As Integer

N = Val(txtN.Text)

‘переопределяем динамический массив intA(N)

‘после определения переменной N:

ReDim intA(N) As Integer

Cls

CurrentY = 1300: CurrentX = 40

FontSize = 8

Print " ИСХОДНЫЕ ДАННЫЕ"

Print

kv = 0

For i = 1 To N

kv = kv + 1

intA(i) = Int(Rnd * (Mk - Mn + 1)) + Mn

Print " intA("; i; ")= "; intA(i); " ";

If kv = 5 Then Print: kv = 0

Next i

End Sub

Для события Click кнопки cmdВычислить напишите следующий код:

Private Sub cmdВычислить_Click()

Dim i As Integer, sum_ As Integer

Dim sum2 As Integer, mul_ As Long

Dim mul2 As Long

FontSize = 8

sum_ = 0: sum2 = 0: mul_ = 1: mul2 = 1

For i = 1 To N

If intA(i) Mod 2 = 0 Then sum2 = sum2 + intA(i): _

mul2 = mul2 * intA(i)

If intA(i) < 0 Then sum_ = sum_ + intA(i): _

mul_ = mul_ * intA(i)

Next i

Print

Print

FontItalic = True

FontSize = 10

Print “===================================="

Print " РЕЗУЛЬТАТЫ РАСЧЕТОВ"

Print "===================================="

FontItalic = False

Print " Сумма четных элементов = "; sum2

Print " Произведение четных элементов = "; mul2

Print

Print " Сумма отрицательных элементов = "; sum_

Print " Произведение отрицательных элементов = "; mul_

End Sub

Для ускорения написания кода копируйте одинаковые фрагменты кода из одной процедуры в другую.

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