Додавання візуального ефекту в масив, programmirovanie-dla-Sсhool
Урок з серії: "Програмування на мові Паскаль"
Продовжимо знайомитися з алгоритмами обробки одновимірних масивів. У цій статті розглянемо алгоритми для вставки елементів в масив. Як і в алгоритмах з видаленням елементів, будемо розрізняти два випадки: вставку одного елемента і вставку кількох елементів. Алгоритми виходять різні.
Вставка одного елемента
Вставити елемент можна до або після цього елемента, номер цього елемента можна вводити з клавіатури або шукати при певних умовах.
Розглянемо вставку елемента після елемента з даним номером, номер цього елемента будемо вводити з клавіатури.
Розглянемо нескладне завдання.
Приклад 1. У масив, що складається з n елементів, вставити число b після k-го елемента.
Розглянемо на конкретному прикладі. Нехай дано наступний одновимірний масив з 10 (n = 10) елементів:
3, -12, 5, 14, 27, -6, 1, -34, 10, -15.
Вставимо число 100 після 5 елементу (b = 100, k = 5)
Алгоритм вставки елемента в масив:
- Перші 5 елементів масиву залишаються без змін.
- Зрушити всі елементи, починаючи з шостого, на один назад. Але щоб не втратити сусіднє значення, зрушення будемо починати з останнього елемента - зрушити спочатку десятий на один вправо, потім дев'ятий, восьмий і т. Д. До шостого (m [i + 1]: = m [i], i = n. .k).
- На місце шостого елемента записуємо значення 100, тобто після 5-го елемента масиву (m [k + 1]: = b;).
Отримаємо наступний масив:
3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15.
Таким чином, в масиві стало 11 елементів, тобто масив треба визначати на N + 1 елемент:
Type myarray = Array [1..n + 1] Of Integer.
Складемо тепер нову процедуру Insert1 (k1, x1, m), якій передаються: k 1 - номер елемента, після якого треба вставити, х1 - число, яке вставляємо, m - масив, в якому робимо перетворення.
Складемо основну програму з використанням нової процедури Insert1 (k1, x1, m).
Ми розглянули алгоритм вставки одного елемента в масив. Розглянемо наступний випадок.
Вставка декількох елементів
Припустимо, що необхідно вставляти не один елемент в масив, а по одному елементу після всіх елементів із заданою властивістю. Розглянемо наступну задачу.
Приклад 2. Вставити число після всіх елементів масиву, кратних 3.
Перше, на що необхідно звернути увагу - це опис масиву: на скільки елементів може збільшитися масив?
Максимальна кількість елементів, після яких може бути вставлений новий елемент, збігається з кількістю елементів масиву. Так як може статися, що всі елементи масиву відповідають заданим властивості. Тому масив може збільшитися в два рази (це його найбільша розмірність), а значить, відповідне йому опис буде наступним:
Type myarray = Array [1..2 * n] Of Integer;
І останнє, на що потрібно звернути увагу, це те, що номер останнього елемента після кожної вставки буде змінюватися. Його потрібно буде перевизначати. Для цього потрібно вести підрахунок кількості вставлених елементів на даний момент.
Для вставки декількох елементів в масив складемо нову процедуру Insert2 (k1, x1, m), в якій буде вестися підрахунок кількості вставлених елементів і коригуватися номер останнього елемента.
Номер останнього елемента необхідний для того, щоб знати, скільки елементів необхідно зрушити при звільненні місця для нового елемента, так як кількість елементів в цій частині масиву збільшується.
Нижче представлений текст процедури з урахуванням змін. Параметри у процедури залишимо колишні.