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

4. Синтез сложных алгоритмов из производных алгоритмических структур

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

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

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

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

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

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

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

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

Пример 14.

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

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

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

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

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

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

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

Математическая модель:

k = 0;

для i = 1.. m, j = 1.. n,

если aij – четное, то k = k + 1 и bk = aij

1

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

2

3

4

6

5

да

да

нет

7

13

8

да

12

нет

9

14

да

15

10

11

16

16

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

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

Next

k=0

For i=1 to m

For j=1 to n

If a(i,j) mod 2 =0 Then k=k+1:

b(k)=a(i,j)

Next j

Next i

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

For i=1 to m

Print

For j=1 to n

Print a(i,j);

Next

Next

If k <>0 Then

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

For i=1 to k

Print b(i);

Next

Else

Print “Четных значений элементов в массиве А нет”

End If

End Sub

4.2. Производная алгоритмическая структура Перестановка

Используется в тех случаях, когда требуется поменять местами значения элементов массива.

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

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

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

3. Телом цикла служит структура Следование, состоящая из трех блоков:

- в первом блоке дополнительной переменной присваивается значение первого из двух элементов массива, значения которых переставляются;

- во втором блоке этому элементу массива присваивается значение второго из двух элементов массива;

- в третьем блоке второму из элементов присваивается значение дополнительной переменной.

Пример 15.

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

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

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

Выходные данные: A=[aij], , – массив целых чисел.

Математическая модель:

для i = 1.. m, j = m .. 1;

d = aik, aik = aqj, aqj = d

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

13

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

Private Sub Command1_Click()

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

Dim d As Integer, a() As Integer

m = Text1

k = Text2

q = Text3

ReDim a(1 To m, 1 To m)

For i = 1 To m

For j = 1 To m

a(i, j) = InputBox("a(" & i & "," & j & ")")

Next

Next

Print Chr(10); " Исходный массив А "

For i = 1 To m

Print

For j = 1 To m

Print a(i, j);

Next

Next

For i = 1 To m

For j = m To 1 Step -1

d = a(i, k)

a(i, k) = a(q, j)

a(q, j) = d

Next

Next

Print Chr(10); "Полученный массив А "

For i = 1 To m

Print

For j = 1 To m

Print a(i, j);

Next

Next

End Sub

Результат выполнения кода приложения представлен на форме: