|
Новости |
Вставка элементов в одномерный массивВставка одного элементаВставлять элемент можно до или после данного элемента, номер этого элемента можно вводить с клавиатуры или искать при определённых условиях. Рассмотрим вставку элемента после элемента с данным номером, номер этого элемента будем вводить с клавиатуры. Вставка элемента после элемента с заданным номером. Пример Вставить число 100 после пятого элемента массива. Решение Пусть k - это номер элемента, после которого мы должны вставить элемент х (k и х будем вводить с клавиатуры). Тогда вставка осуществляется следующим образом:
Рассмотрим на конкретном примере. Пусть дан следующий одномерный массив из N (N = 10) элементов: 3, -12, 5, 14, 27, -6, 1, -34, 10, -15. Надо вставить 100 после пятого элемента массива. Тогда получим следующий массив: 3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15. Таким образом, в массиве стало 11 элементов, то есть массив надо определять на N+1 элемент: Type myarray = Array[1..n+1] Of Integer. Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем все N+1 элементы. Поэтому будем использовать уже известную процедуру Print1. Составим теперь основную программу с использованием новой процедуры Insert1 (k1, x1, m), которой передаются: k1 - номер элемента, после которого надо вставить, х1 - число, которое вставляем, m - массив, в котором делаем преобразования. Кроме того, сдвиг элементов будем начинать с последнего элемента.
Рассмотрим выполнение программы по шагам выполнения. Пусть начальное заполнение массива сделано и имеется массив из десяти целых чисел: 3, -12, 5, 14, 27, -6, 1, 34, 10, -15. Кроме того, пусть первый вывод массива тоже уже сделан и на экране появились 10 целых чисел. Введём номер элемента, после которого будем вставлять новый элемент и сам этот новый элемент: k = 5 - будем вставлять после пятого элемента; x = 100 - вставлять будем число 100.
Таблица 3
Итак, получили новый массив, который уже имеет N+1 элемент, его и будем выводить на экран. На экране всё это будет выглядеть следующим образом: 3 -12 5 14 27 -6 1 34 10 -15 Номер элемента, после которого вставлять, и вставляемое число 5 100 3 -12 5 14 27 100 -6 1 34 10 -15 Вставка элемента перед данным Пример Вставить число 100 перед пятым элементом массива. Решение Эта вставка немногим отличается от предыдущей: в первой сдвигали назад все элементы, стоящие после k-го, то есть с (k+1)-го, а на его место записывали новый элемент, в этой - сдвигаем все элементы с k-го, а затем на его место записываем новый, Пусть дан следующий одномерный массив из N (N=10) элементов: 3, -12, 5, 14, 27, -6, 1, 34, 10, -15. Надо вставить 100 перед пятым элементом массива. Тогда получим следующий массив: 3, -12, 5, 14, 100, 27, -6, 1, 34, 10, -15. Изменим программу для этой вставки:
Рассмотрим на том же примере пошаговое выполнение программы. Пусть начальное заполнение массива сделано и имеется массив из десяти целых чисел: 3, -12, 5, 14, 27, -6, 1, -34, 10, -15. Кроме того, пусть первый вывод мвссива тоже уже сделан и на экране появились 10 целых чисел. Введём номер элемента, перед которым будем вставлять новый элемент и сам этот новый элемент:
Таблица 4
Итак, получили новый массив, который уже имеет N+1 элемент, его и будем выводить на экран. На экране всё это будем выглядеть следующим образом: 3 -12 5 14 27 -6 1 -34 10 -15 Номер элемента, перед которым вставлять, и вставляемое число 5 100 3 -12 5 14 100 27 -6 1 -34 10 -15 Вставка нескольких элементовПредположим, что необходимо вставлять не один элемент в массив, а по одному элементу после всех элементов с заданным свойством. Рассмотрим эту вставку на примере вставки после всех элементов с заданным свойством. Пример Вставить число после всех элементов массива, кратных 3. Решение Первое, на что необходимо обратить внимание - это описание массива: на сколько элементов может увеличиться массив? Максимальное количество элементов, после которых будет вставлен новый элемент, совпадает с количеством элементов массива, так как может случиться, что все элементы массива отвечают заданному свойству. Поэтому массив может увеличиться в два раза (это его самая большая размерность), а значит, соответствующее ему описание будет следующим: Type myarray = Array[1..2*n] Of Integer; Второе. Если мы будем просматривать элементы массива с начала и вставлять новый после элемента заданным свойством, то номер последнего элемента каждый раз может меняться, кроме того, будем просматриваться и новый (вставленный) элемент и его необходимо будет пропускать ("перепрыгивать"), поэтому решение будет не очень эффективным. Лучше всего просматривать массив, начиная с конца, тогда вставляемый элемент мешать не будет. Кроме того, номер последнего элемента можно будет знать (если знать, сколько элементов вставлено на данный момент), при этом просмотр будет последовательным от N-го до 1-го. Составим программу.
Рассмотрим выполнение программы в пошаговом режиме. Будем вставлять после всех элементов, кратных 3, число 100, то есть х = 100. Пусть дан массив из 10-ти элементов: 3, -12, 5, 14, 27, -6, 1, 34, 10, -15. Пусть так же первый вывод массива сделан. Трассировка примера приведена в таблице 5. Таким образом, массив увеличился на k элементов. На экране всё это будет выглядеть следующим образом: 3 -12 5 14 27 -6 1 -34 10 -15 3 100 -12 100 5 14 27 100 -6 100 1 -34 10 -15 100
Таблица 5
|
На главную страницу(с)Все права защищеныПо всем интересующим вопросам прошу писать на электронный адрес |