Задание № 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).








Дата добавления: 2015-02-05; просмотров: 1492;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.014 сек.