Лекция 11(7) Примеры программирования задач
.pdfАлгоритмизация и программирование
Программирование типовых циклических процессов
Лекция 11 по дисциплине «Информатика», часть 2 Автор, доцент кафедры информатика Тимухина В.В.
Алгоритм объединения двух массивов с чередованием элементов
•Объединить два массива А и В одинакового размера М в один массив с чередованием элементов. I=1,…,M.
•Нечетные элементы С(2*I-1)=A(I) Четные элементы С(2*I)=B(I)
•Входные данные: M, A(M), B(M).
Выходные данные: C(2*M) – массив результатов.
Вспомогательные данные: I текущее значение индекса элементов массива.
I=1,M,1
C(2*I-1)=A(I)
C(2*I)=B(I)
Код программы
For i=1 to M C(2*i-1)=A(i) C(2*i)=B(i)
next
Лекция 11 Информатика,часть2 |
2 |
Разработка формы
Входные данные:
i- текущий номер элемента
входного массива |
ListBox1 |
ListBox2 |
|
A(i) – текущий элемент |
|||
|
|
||
массива А |
|
|
|
B(i) – текущий элемент |
|
|
|
массива В. |
|
|
|
Выходные данные: |
|
|
|
C – массив результатов. |
|
|
Лекция 11 Информатика,часть2 |
3 |
Текст программы кнопки «Ввести»
Private Sub CommandButton1_Click()
Dim i As Byte
i = TextBox1.Value 'Задание номера первого элемента масивов А и В With ListBox1 'Начало структурного оператора для Списка1
.ColumnCount = 2 'Объявление двух колонок в Списке1
.ColumnWidths = "20;20" 'Объявляем ширину колонок
.AddItem TextBox2.Text 'Добавляем элемент массива А в строки 'Списка1 в 0 колонку
.List(i - 1, 1) = TextBox3.Text 'Добавляем элемент массива В в ' 1 колонку Списка1
End With 'Конец структурного оператора для Списка1 i = i + 1 'Изменяем номер элемента массивов А и В TextBox1.Value = i 'Выводим этот номер в TextBox1
End Sub
В программе используется цикличность нажатия на кнопку «Ввести»
Лекция 11 Информатика,часть2 |
4 |
Текст программы кнопки «Переписать»
Private Sub CommandButton2_Click()
' В цикле элементы Списка1(ListBox1) переписываются в Список2(ListBox2),
при этом элементы моссивов А и В чередуются
For i = 0 To ListBox1.ListCount - 1
ListBox2.AddItem ListBox1.List(i, 0) 'Создает 0,2,4 и т.д. строки Списка2
ListBox2.AddItem ListBox1.List(i, 1) 'Создает 1,3,5 и т.д. строки Списка2
Next End Sub
Лекция 11 Информатика,часть2 |
5 |
Результат выполнения программы
Лекция 11 Информатика,часть2 |
6 |
Пример. Удаление и добавление элементов в массив
1.Введем элементы в массив и затем в Список1.
2.Укажем номер удаляемого элемента и удалим его из массива, измененный массив запишем в Список2.
3.Укажем номер и значение добавляемого элемента и добавим этот элемент в измененный массив, запишем получившийся массив в Список3.
При программировании будем учитывать, что по умолчанию счет элементов Списков начинается с 0.
Предварительно рассмотрим типовые алгоритмы удаления и добавления элементов в массив. См. лекцию 6.
Лекция 11 Информатика,часть2 |
7 |
Алгоритм удаления элемента из массива
•Удаление К элемента из
массива А размерностью М.
Удалить К элемент из массива можно сдвинув весь «Хвост» массива, начиная с К+1 элемента на одну позицию вверх, выполняя операцию: А(I)=A(I+1), I=K, K+1,…,M
•Входные данные: M, A(M), К.
Выходные данные: А(M-1) – массив результата (на один элемент меньше исходного).
Вспомогательные данные: I текущее значение индекса элементов массива.
Параметр цикла I изменяется от К до М-1.
Формула в цикле: A(I)=A(I +1).
I=K, M-1 |
A(I)=A(I+1) |
Текст программы
For i=K to M-1 A(i)=A(i+1) Next i
Лекция 11 Информатика,часть2 |
8 |
Алгоритм включения нового элемента в массив в указанную позицию
• Включение элемента D в К |
Параметр цикла I изменяется от М до |
||||||||
К с шагом -1. |
|
|
|
||||||
позицию массива А размерностью |
|
|
|
||||||
Формула в цикле: A(I+1)=A(I). |
|
||||||||
М. |
|
||||||||
Перед включением элемента нужно |
Включение в К позицию массива |
|
|||||||
раздвинуть массив, начиная с К |
значения переменной D A(K)=D, |
|
|||||||
позиции, т.е. сдвинуть весь |
увеличение размера массива М=М+1 |
||||||||
«хвост» массива, начиная с К+1 |
|
|
|
|
|
|
|
|
|
элемента на одну позицию вниз , |
|
|
|
|
|
|
|
|
|
выполняя операцию: А(i+1)=A(I), |
|
|
I=M, K,-1 |
|
|
|
|
||
I=M, M -1,…,K, ( шаг изменения I= - |
|
|
|
|
|
|
|||
|
|
|
|
||||||
|
|
|
|
|
|||||
1) |
|
|
|
|
|
|
|
|
|
Перемещение элементов нужно |
|
|
A(I+1)=A(I) |
|
|
A(K)=D |
|
||
начинать с конца. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• Входные данные: M, A(M), К,D. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M=M+1 |
|
||
Выходные данные: А(M+1) – |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
массив результата (на один |
|
|
Текст программы |
|
|||||
элемент больше исходного). |
|
|
|
||||||
|
|
For i=M to K Step -1 |
|
||||||
Вспомогательные данные: I |
|
|
|
||||||
|
|
A(i+1)=A(i) |
|
|
|
||||
текущее значение индекса |
|
|
|
|
|
||||
элементов массива. |
|
|
Next I |
|
|
|
|||
Лекция 11 Информатика,часть2 A(k)=D:M=M+1 |
9 |
Разработка формы
Входные данные:
•№ вводимого элемента массива.
•Значение вводимого элемента массива.
•№ удаляемого элемента массива.
•№ добавляемого элемента массива.
•Значение добавляемого элемента массива.
Выходные данные:
•Массив исходный.
•Массив с удаленным элементом.
•Массив с добавленным элементом.
Лекция 11 Информатика,часть2 |
10 |