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

3.8 Производная алгоритмическая структура Счётчик

Производная алгоритмическая структура Счётчик используется для подсчета количества элементов массива в соответствии с заданным условием или для вычисления количества итераций в итерационных циклах.

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

Примечание. Следует заметить, что в производной алгоритмической структуре Счётчик роль "Флажка" может выполнять дополнительная переменная.

Пример 23.

Разработать информационную технологию, позволяющую вычислить количество отрицательных элементов в одномерном массиве А произвольной размерности m.

Входные данные: m – целое число;

A = [ai], – массив целых чисел.

Выходные данные:

t – количество элементов массива, имеющих отрицательные значения, целое число.

Описание математических и логических зависимостей.

t = 0;

для i = 1… m, если ai < 0, то t = t + 1.

После выполнения цикла проверяется: если t = 0 – вывод информа-ционного сообщения.

Схема алгоритма:

Нет

Да

Нет

Код приложения:

Private Sub Command1_Click()

Dim m As Integer, i As Integer, t As Integer, a() As Integer

m=InputBox(“Введите размерность”)

ReDim a(1 To m)

t=0

For i=1 To m

a(i)=InputBox(“a(“ & i & ”)”)

Print a(i);

If a(i)<0 then t = t+1

Next

If t=0 then

MsgBox “Отрицательных элементов в массиве нет!”

Else

MsgBox “ В массиве ” & t & ”отрицательных элементов”

End If

End Sub

3.9 Производная алгоритмическая структура Выборка

Эта структура предназначена для формирования массива в соответствии с заданным условием.

Особенности алгоритма.

1. При разработке алгоритма могут использоваться ранее рассмотренные производные алгоритмические структуры.

2. Массив, из которого осуществляется выборка, хранится в оперативной памяти.

Пример 24.

Разработать информационную технологию, позволяющую заполнить в вычислительной среде одномерный массив В значениями элементов массива А произвольной размерности m×n, имеющих чётные значения элементов.

Входные данные:

m – целое число;

n – целое число;

A = [aij], , – массив целых чисел.

Выходные данные:

B = [bk], – массив целых чисел (mn – максимально возможная размерность массива).

Описание математических и логических зависимостей.

k = 0;

для j = 1… n,

для i = 1… m,

если ai j – четное, то k = k + 1 и bk = ai j.

Схема алгоритма:

К од приложения:

Option Base 1

Private Sub Command1_Click()

Dim i As Integer, j As Integer, k As Integer, m As Integer, n As Integer

Dim a() As Integer, b() As Integer

m=InputBox(“Введите количество строк матрицы”)

n=InputBox(“Введите количество столбцов матрицы”)

ReDim a(m, n), b(m*n)

For i=1 to m

For j=1 to n

a(i, j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next j

Next i

k=0

' Обработка массива осуществляется по столбцам

For j=1 to n

For i=1 to m

If a(i,j) mod 2 =0 Then

k=k+1:

b(k)=a(i, j)

End If

Next i

Next j

Print “Исходный массив A”

For i=1 to m

Print

For j=1 to n

Print a(i, j);

Next j

Next i

If k <>0 Then

Print Chr(10);“Заполнен массив В

For i=1 to k

Print b(i);

Next

Else

Print “Элементов, имеющих четные значения, в массиве А нет”

End If

End Sub

Пример 25.

Разработать информационную технологию, позволяющую заполнить вектор Q значениями элементов столбцов матрицы DX произвольной размерности k×g, в которых значение последнего элемента попадает в интервал [5, 8]. Подсчитать количество таких столбцов.

Входные данные:

k – переменная целого типа;

g – переменная целого типа;

DX = [dxmn], , – массив целых чисел.

Выходные данные:

Q = [qi], – массив целых чисел (kg – максимально возможная размерность массива);

count – количество столбцов, содержащих элементы, попадающие в заданный интервал.

Описание математических и логических зависимостей.

сount = 0; i = 0;

для n = g … 1 с шагом -1,

если DXmn ∊[5, 8], то

count = count + 1, для m = 1… k, i=i+1, qi = DXn m .

После выполнения цикла проверяется: если count = 0, то вывод информационного сообщения.

С хема алгоритма:

Код приложения:

Private Sub Form_Click()

Dim m As Integer, n As Integer, Q() As Integer

Dim i As Integer, count As Integer

Dim DX() As Integer, k As Integer, g As Integer

Form1.Caption = "Синтез производных структур"

k = InputBox("Введите количество строк матрицы")

g = InputBox("Введите количество столбцов матрицы")

ReDim DX(1 To k, 1 To g)

For m = 1 To k

For n = 1 To g

DX(m, n) = InputBox("Введите элемент матрицы")

Next

Next

Print "Исходный массив DX"

For m = 1 To k

Print

For n = 1 To g

Print DX(m, n);

Next

Next

count = 0: i = 0

For n = g To 1 Step -1

If DX(k, n) >= 5 And DX(k, n) <= 8 Then

count = count + 1

For m = 1 To k

i = i + 1

ReDim Preserve Q(i)

Q(i) = DX(m, n)

Next m

End If

Next n

If count <> 0 Then

Print Chr(10); "Заполненный вектор Q"

For n = 1 To i

Print Q(n);

Next

Print Chr(10), "Количество столбцов = "; count

Else

CurrentX = 1200

CurrentY = 1300

Print "УСЛОВИЕ ПОИСКА НЕ ВЫПОЛНЯЕТСЯ!!!"

End If

End Sub

Результат выполнения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]