Читайте также: |
|
ИЗ ПРОИЗВОДНЫХ АЛГОРИТМИЧЕСКИХ СТРУКТУР
При разработке более сложных информационных технологий используются алгоритмы, представляющие собой сочетания алгоритмов производных алгоритмических структур. Наиболее распространенные из них – Выборка и Перестановка.
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
|
|
|
|
|
|
Код приложения:
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
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
Схема алгоритма:
Код приложения:
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
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
For j = 1 To m
Print a(i, j);
Next
Next
End Sub
Результат выполнения кода приложения представлен на форме:
Дата добавления: 2015-11-26; просмотров: 202 | Нарушение авторских прав