Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 11(7) Примеры программирования задач

.pdf
Скачиваний:
19
Добавлен:
03.06.2015
Размер:
274.22 Кб
Скачать

Алгоритмизация и программирование

Программирование типовых циклических процессов

Лекция 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